【问题标题】:Python send email from a csv listPython 从 csv 列表发送电子邮件
【发布时间】:2015-05-31 19:41:13
【问题描述】:

我是 python 新手,正在尝试使用 smtplib 读取值发送电子邮件。这是我的 csv 文件的格式 -

Name,Email,Message  
A,a@email.com,Message1  
B,b@email.com,Message2  
C,c@email.com,Message3  

我需要编写一个 Python 脚本来读取 csv 列并从电子邮件列向每个成员发送电子邮件,并在电子邮件正文中包含相应的消息文本

【问题讨论】:

    标签: python python-2.7 python-3.x


    【解决方案1】:

    假设您使用的是 Python-2.x。

    您可以使用smtplib 模块发送电子邮件,使用csv 模块读取csv 文件。

    此外,要使用smtplib,您必须有一个用于发送电子邮件的电子邮件地址,无论该电子邮件是 Yahoo 邮箱还是 Gmail 或其他任何邮箱。

    部分示例代码如下:

    #!/usr/bin/python
    
    import csv
    import smtplib
    from email.mime.text import MIMEText
    from email.Header import Header
    
    def sendmail(info_list):
        msg = MIMEText(info_list[2], "html", "utf-8")
        msg['Subject'] = Header("YOUR SUBJECT", "utf-8")
        msg['From'] = "FROM_WHOM@XXX.com"
        msg['To'] = info_list[1]
        s = smtplib.SMTP("smtp.XXX.com")
        s.ehlo()
        s.starttls()
        s.login("YOUR EMAIL USERNAME", "YOUR EMAIL PASSWORD")
        s.sendmail("FROM_WHOM", info_list[1], msg.as_string())
    
    def main():
        with open("msg.csv", "rb") as csvfile:
            msg_reader = csv.reader(csvfile)
            msg_reader.next()
            map(lambda x: sendmail(x), msg_reader)
    
    if __name__ == "__main__":
        main()
    

    【讨论】:

    • @user455580 很高兴为您提供帮助:)
    • 我只使用上面的代码一个问题我在列表映射中转换之前没有发送面部邮件(lambda x:sendmail(x),msg_reader)
    【解决方案2】:

    Python 带有一个很棒的模块,叫做 smtplib。它用于简单邮件传输协议。

    import smtplib
    sender = 'from@fromdomain.com'
    receivers = ['to@todomain.com']
    
    message = """From: From Person <from@fromdomain.com>
    To: To Person <to@todomain.com>
    Subject: SMTP e-mail test
    
    This is a test e-mail message.
    """
    
    try:
       smtpObj = smtplib.SMTP('localhost')
       smtpObj.sendmail(sender, receivers, message)         
       print("Successfully sent email")
    except SMTPException:
       print("Error: unable to send email")
    

    代码信用http://www.tutorialspoint.com/python/python_sending_email.htm

    【讨论】:

      【解决方案3】:

      SMTP 是一个很棒的模块,但对用户不太友好。

      yagmail 试图让这一切变得容易一些。

      在你的情况下,我会使用:

      import yagmail
      
      yag = yagmail.Connect('username', 'password')
      
      with open("msg.csv", "rb") as csvfile:
          csv_reader = csv.reader(csvfile)
          csv_reader.next()
      
          for line in csv_reader:
              for name, email, message in line.strip().split(','):
                  yag.send(email, subject = name, contents = message) 
      

      【讨论】:

        猜你喜欢
        • 2020-12-15
        • 1970-01-01
        • 2018-06-09
        • 2015-02-02
        • 1970-01-01
        • 1970-01-01
        • 2019-11-21
        • 2022-10-13
        • 1970-01-01
        相关资源
        最近更新 更多