Send email with python

岁酱吖の 提交于 2019-11-29 12:09:33

/usr/share/sendmail is very unusual - are you sure your sendmail binary is actually there? Normally it's at /usr/sbin/sendmail.

I'd rather use the standard library smptlib instead of calling sendmail directly if I were you.

You can use it like this to send a message:

 server = smtplib.SMTP('smtp.example.com')
 server.sendmail(fromaddr, toaddrs, msg)
 server.quit()

Instead of calling a specific process, you can if your mail is configured directly use the dedicated mail libs:

import smtplib
from email.mime.text import MIMEText

fp = open(textfile, 'rb')
# Create a text/plain message
msg = MIMEText(fp.read())
fp.close()

# Format headers
msg['Subject'] = 'My subject'
msg['From'] = 'from@from.fr'
msg['To'] = 'to@to.com'

# Send the message via Michelin SMTP server, but don't include the envelope header.
s = smtplib.SMTP('your mail server')
s.sendmail('from@from.fr', ['to@to.com'], msg.as_string())
s.quit()

You have more python email examples in the doc.

Here is some code that sends emails using smtplib, and can do TLS/SSL

import smtplib
from email.MIMEText import MIMEText
from email.utils import parseaddr

class Mailer(object):
    def __init__(self, fromAddress, toAddress, password):
        self.fromAddress = parseaddr(fromAddress)[1]
        self.toAddress = parseaddr(toAddress)[1]
        self.password = password

    def send(self, subject, body):
        msg = MIMEText(body)
        msg["From"] = self.fromAddress
        msg["Reply-to"] = self.toAddress
        msg["To"] = self.toAddress
        msg["Subject"] = subject

        sender = msg["From"]
        recipient = msg["To"]

        messageText = "".join(str(msg))
        mxhost = self.lookup(sender) # lookup finds the host that you want to send to

        server = smtplib.SMTP(mxhost, 587) #port 465 or 587
        server.ehlo()
        server.starttls()
        server.ehlo()
        server.login(sender, self.password)
        server.sendmail(sender, recipient, messageText)
        server.close()

This is my code to send email.

#coding: utf-8

import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate

def send_mail(to_list,sub,content):
    mail_host="smtp.example.com"
    mail_user="nvi"
    mail_pass="password"
    mail_postfix="example.com"
    me=mail_user + '555' +"<"+mail_user+"@"+mail_postfix+">"
    msg = MIMEText(content, _subtype='plain', _charset='utf-8')
    msg['Subject'] = sub
    msg['From'] = me
    msg['To'] = to_list
    msg['Date'] = formatdate(localtime=True)
    msg['Bcc'] = '123@example.com'
    try:
        s = smtplib.SMTP()
        s.connect(mail_host)
        s.login(mail_user,mail_pass)
        s.sendmail(me, to_list, msg.as_string())
        s.close()
        return True
    except Exception, e:
        print e
        return False


if __name__ == "__main__":
    send_mail('my_email_address', 'subject', 'content')

My program works with gMail, you can try and play around with it for anything else. You can also send SMS messages. I am attaching my code below.

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders
Type = input("Enter 1 for eMail, 2 for SMS: ")
toaddr = 0
if Type=='1':
   toaddr = input("Enter to address: ")
else:
   Provider = input("1 for Sprint, 2 for AT&T, and 3 for Verizon: ")
   Mobile = input("Enter the mobile number: ")
   if Provider=='1': 
      toaddr = str(Mobile) + "@messaging.sprintpcs.com"
   if Provider=='2':
      toaddr = str(Mobile) + '@txt.att.net'
   if Provider=='3':
      toaddr = str(Mobile) + ''
   print (toaddr)      
head = input("Enter your subject: ")
body = input("Enter your message: ")
fromaddr = input("Enter the 'From Address'(example@gmail.com): ")
msg = MIMEMultipart()
msg['From'] = fromaddr
msg['To'] = toaddr
msg['Subject'] = head
password = input("Enter the from address password: ")
msg.attach(MIMEText(body, 'plain'))
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(fromaddr, password)
text = msg.as_string()
server.sendmail(fromaddr, toaddr, text)
server.quit()

I hope this helps.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!