我正在尝试使用Python向自己发送短信。为此,我创建了一个Gmail帐户,打开了less secure apps,并运行了以下代码:
import smtplib
from email.mime.text import MIMEText
# Establish a secure session with gmail's outgoing SMTP server using your gmail account
server = smtplib.SMTP('smtp.gmail.com', 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login('me@gmail.com', 'pw!' )
msg = '\r\n'.join([
'From: me@gmail.com',
'To: 5551234567@tmomail.net',
'Subject: Cats',
'',
'on wheels'
])
# sendmail(from, to, msg)
server.sendmail('me@gmail.com', '5551234567@tmomail.net', msg)
这确实向我的手机发送了一条短信,但该消息显示如下:
me@gmail.com / Cats / on wheels
此外,我的短信列表中的“发件人”代理会显示为随机连字符对,例如“ 970-2”或“ 910-2”。
但是,当我从gmail自身向我的电话号码发送一条消息时,它在我的短信列表中显示为“ me@gmail.com”,并显示如下:
<b>Subject is here</b>
Body of email is here
我是否可以更改上面的msg
对象,以使从Python发送的邮件像从Gmail本身发送的邮件一样显示?
任何其他人可以在这个问题上提出的建议将大有帮助!
答案 0 :(得分:0)
要弄清楚这一点,我从Gmail发送了一封电子邮件,然后单击已发送邮件旁边的三个点,然后单击“显示原始邮件”,显示了Gmail服务器传递的完整数据包。然后我将这些字段添加到我的消息中:
import smtplib
import email.mime.multipart
# Establish a secure session with gmail's outgoing SMTP server using your gmail account
server = smtplib.SMTP('smtp.gmail.com', 587)
server.set_debuglevel(1)
server.ehlo()
server.starttls()
server.login('me@gmail.com', pw)
msg = '\r\n'.join([
'MIME-Version: 1.0',
'Date: Fri, 22 Feb 2019 11:29:27 -0500',
'Message-ID: <CAKyky413ikdYD4-Oq_H_FPF-g__weSFehQNLVuspotupWhJaLA@mail.gmail.com>',
'Subject: wow on what',
'From: Ludwig Wittgenstein <me@gmail.com>',
'To: 5551234567@tmomail.net',
'Content-Type: multipart/alternative; boundary="0000000000003c664305827e1862"',
'',
'--0000000000003c664305827e1862',
'Content-Type: text/plain; charset="UTF-8"',
'',
'weeeee',
'',
'--0000000000003c664305827e1862',
'Content-Type: text/html; charset="UTF-8"',
'Content-Transfer-Encoding: quoted-printable',
'',
'<div dir=3D"ltr">here=C2=A0</div>',
''
'--0000000000003c664305827e1862--'
])
# sendmail(from, to, msg)
server.sendmail('me@gmail.com', '5551234567@tmomail.net', msg)