Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python发送邮件_Python_Python 2.7_Email_Smtplib - Fatal编程技术网

使用python发送邮件

使用python发送邮件,python,python-2.7,email,smtplib,Python,Python 2.7,Email,Smtplib,问题:当我向用户发送邮件时,从用户收件箱中看不到的用户名到用户收件箱只显示电子邮件id,但我需要发件人的用户名 发件人:demo@gmail.com用户名:演示 致:demotest@gmail.com 代码 smtplib不会自动包含任何标题,您需要包含一个From:标题,因此您必须自己放置一个标题,执行如下操作: # Add the From: and To: headers at the start! msg = ("From: %s\r\nTo: %s\r\n\r\n" %

问题:当我向用户发送邮件时,从用户收件箱中看不到的用户名到用户收件箱只显示电子邮件id,但我需要发件人的用户名

发件人:demo@gmail.com用户名:演示

致:demotest@gmail.com

代码
smtplib
不会自动包含任何标题,您需要包含一个
From:
标题,因此您必须自己放置一个标题,执行如下操作:

# Add the From: and To: headers at the start!
msg = ("From: %s\r\nTo: %s\r\n\r\n"
       % (fromaddr, ", ".join(toaddrs)))

正如您可以在中使用一样。

您只需要正确创建消息。我认为最方便的方法是使用一个特殊的对象来传递消息。我放置了一个类,它可能会帮助您在项目中发送消息

import os
import smtplib

from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart



class EmailSender(object):
    def __init__(self, subject, to, config):
        self.__subject = subject
        self.__to = tuple(to) if hasattr(to, '__iter__') else (to,)

        self.__from = config['user']
        self.__password = config['password']
        self.__server = config['server']
        self.__port = config['port']

        self.__message = MIMEMultipart()
        self.__message['Subject'] = self.__subject
        self.__message['From'] = self.__from
        self.__message['To'] = ', '.join(self.__to)


    def add_text(self, text):
        self.__message.attach(
            MIMEText(text)
        )


    def add_image(self, img_path, name=None):
        if name is None:
            name = os.path.basename(img_path)

        with open(img_path, 'rb') as f:
            img_data = f.read()
            image = MIMEImage(img_data, name=name)
            self.__message.attach(image)


    def send(self):
        server = smtplib.SMTP_SSL(self.__server, self.__port)
        server.login(self.__from, self.__password)
        server.sendmail(self.__from, self.__to, self.__message.as_string())
        server.close()



sender = EmailSender("My letter", "my_target@email", {
    'user': "from@email",
    'password': "123456",
    'server': "mail.google.com"
    'port': 465
})
sender.add_text("Why,Oh why!")
sender.send()

或者简单地安装和安装

鉴于:

To = 'someone@gmail.com'
From = 'me@gmail.com'
pwd = '******'
alias = 'someone'
运行:


安装可以通过
pip Install yagmail

完成,可能是Okay的副本,但问题可能是头部,让我们继续调查。如果您找到了解决方案,请告知我们获得了类似回溯(最近一次呼叫)的错误:socket.error:[Errno 101]无法访问网络可能会,这将帮助您:谢谢,但不是必需的yagmail LIB
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

fromaddr = 'demo@gmail.com'
toaddrs = 'demotest@gmail.com'

msg = MIMEMultipart('alternative')
msg['Subject'] = "Link"
msg['From'] = "good morning" #like name
msg['To'] = "GGGGGG"

body = MIMEText("example email body")
msg.attach(body)

username = 'demo@gmail.com'
password = ''
server = smtplib.SMTP_SSL('smtp.googlemail.com', 465)
server.login(username, password)
server.sendmail(fromaddr, toaddrs, msg.as_string())
server.quit()
import yagmail
yag = yagmail.SMTP(From, pwd)
yag.send({To: alias}, 'subject', 'Why,Oh why!')
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

fromaddr = 'demo@gmail.com'
toaddrs = 'demotest@gmail.com'

msg = MIMEMultipart('alternative')
msg['Subject'] = "Link"
msg['From'] = "good morning" #like name
msg['To'] = "GGGGGG"

body = MIMEText("example email body")
msg.attach(body)

username = 'demo@gmail.com'
password = ''
server = smtplib.SMTP_SSL('smtp.googlemail.com', 465)
server.login(username, password)
server.sendmail(fromaddr, toaddrs, msg.as_string())
server.quit()