2016-08-03 43 views
1

Ich versuche ein Programm zu schreiben, das eine E-Mail von Google Mail mit einem Textteil mit Echtzeit-Aktienkursen sendet. Ich verwende ein Modul, um Börsenkurse im String-Format zu erhalten (das funktioniert), und ich schrieb eine Funktion, um eine E-Mail von Google Mail zu senden. Die Funktion message_send funktioniert nur, wenn ich ihr eine einfache Zeichenfolge gebe. Es funktioniert nicht, wenn ich die Variable aapl_string übergebe. Siehe Code unten:Python - Text erscheint nicht in code-getriggerter E-Mail gesendet, wenn Zeichenfolge Ergebnis einer Formel ist

from yahoo_finance import * 
import smtplib 

def message_send(messagebody): 
    fromaddr = 'REDACTED' 
    toaddrs = 'REDACTED' 
    msg = messagebody 

    # Credentials (if needed) 
    username = 'REDACTED' 
    password = 'REDACTED' 

    # The actual mail send 
    server = smtplib.SMTP('smtp.gmail.com:587') 
    server.starttls() 
    server.login(username,password) 
    server.sendmail(fromaddr, toaddrs, msg) 
    server.quit() 

aapl = Share('AAPL') 

aapl.refresh() 

price_aapl = aapl.get_price() 

aapl_string = "The current price of AAPL is: " + price_aapl 
print(aapl_string) 

message_send(aapl_string) 

Irgendwelche Ideen, warum die E-Mail sendet, enthält aber leeren Text wenn aapl_string als Argument für die message_send-Funktion?

Danke!

Antwort

1

Sie könnten

message_send("The current value is %s" %price_aapl) 

tun und das sollte es price_aapl eine ganze Zahl arbeiten machen :)

1

Ich gehe davon aus, und wenn das der Fall ist, dann ist das dein ganzes Problem. Dies liegt daran, dass Sie keine Integer zu Strings hinzufügen können. Sie können also eine Formatzeichenfolge verwenden. ex:

aapl_string = "The current price of AAPL is: %d" % price_aapl 

Die% d ist ein Platzhalter für die ganze Zahl price_aapl. Sie können hier klicken ->http://www.diveintopython.net/native_data_types/formatting_strings.html für weitere Informationen über Formatierungszeichenfolgen in Python.

+0

Vergessen, das hinzuzufügen - es ist eine Zeichenfolge und die Druckanweisung gegen Ende des Codes funktioniert – offthewall1066

+1

Oh ok dann statt% d würden Sie einfach% s setzen –