The content of this article is about how PHP uses SwooleTaskWorker to implement asynchronous operation of Mysql (code). It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
There are three ways to send emails in Python, including logging in to the mail server, using the smtp service, and calling the sendmail command.
Sending emails in Python is relatively simple. You can log in to the mail service. To send, you can also use the sendmail command to send under Linux. You can also use local or remote smtp services to send emails. Whether it is single, group, or carbon copy, it is easier to implement. This Mipu blog first introduces a few of the simplest ways to send emails and records them. HTML emails, attachments, etc. are also supported. Just check the documentation when needed.
1. Log in to the mail server
Log in to the third-party smtp mailbox through smtp to send emails, supporting ports 25 and 465
vim python_email_1.py
#!/usr/bin/env python # -*- coding:utf-8 -*- # # author: mimvp.com # 2015.10.05 import smtplib from email.mime.text import MIMEText smtpHost = 'smtp.exmail.qq.com' sender = 'robot@mimvp.com' password = "mimvp-password" receiver = 'yanggang@mimvp.com' content = 'hello mimvp.com' msg = MIMEText(content) msg['Subject'] = 'email-subject' msg['From'] = sender msg['To'] = receiver ## smtp port 25 smtpServer = smtplib.SMTP(smtpHost, 25) # SMTP smtpServer.login(sender, password) smtpServer.sendmail(sender, receiver, msg.as_string()) smtpServer.quit() print 'send success by port 25' ## smtp ssl port 465 smtpServer = smtplib.SMTP_SSL(smtpHost, 465) # SMTP_SSL smtpServer.login(sender, password) smtpServer.sendmail(sender, receiver, msg.as_string()) smtpServer.quit() print 'send success by port 465'
Execute the command:
$ python python_email_1.py send success by port 25 send success by port 465
Send the result and you will receive two emails. Take a screenshot of one of the emails as shown below:
##2. Use smtp service
The test failed, skip it or leave a message to correct it#!/usr/bin/env python # -*- coding:utf-8 -*- # # author: mimvp.com # 2015.10.05 import smtplib from email.mime.text import MIMEText import subprocess smtpHost = 'smtp.exmail.qq.com' sender = 'robot@mimvp.com' password = "mimvp-password" receiver = 'yanggang@mimvp.com' content = 'hello mimvp.com' msg = MIMEText(content) if __name__ == "__main__": p = subprocess.Popen(['/usr/sbin/sendmail', '-t'], stdout=subprocess.PIPE) print(str(p.communicate())) p_res = str(p.communicate()[0]) msg = MIMEText(p_res) msg["From"] = sender msg["To"] = receiver msg["Subject"] = "hello mimvp.com" s = smtplib.SMTP(smtpHost) s.login(sender, password) s.sendmail(sender, receiver, msg.as_string()) s.quit() print 'send success'
3. Call the sendmail command
Call the native Linux sendmail service to send emails. There is no need to start the sendmail background process, and there is no need for the sender to log in. The email sender can be any name, without restrictions. Special note: The sendmail command sends emails using port 25 by default. Since Alibaba Cloud, Tencent Cloud, etc. have blocked port 25, this example needs to be tested on a machine with port 25 enabled vim python_email_3.py#!/usr/bin/env python # -*- coding:utf-8 -*- # # author: mimvp.com # 2015.10.05 from email.mime.text import MIMEText from subprocess import Popen, PIPE import commands import sys reload(sys) sys.setdefaultencoding('utf-8') def send_mail(sender, recevier, subject, html_content): msg = MIMEText(html_content, 'html', 'utf-8') msg["From"] = sender msg["To"] = recevier msg["Subject"] = subject p = Popen(["/usr/sbin/sendmail", "-t"], stdin=PIPE) p.communicate(msg.as_string()) sender = 'robot@mimvp.com' recevier = 'yanggang@mimvp.com' subject = 'sendmail-subject' html_content = 'hello mimvp.com' send_mail(sender, recevier, subject, html_content)
python python_email_3.py
The above is the detailed content of How does Python send? Introduction to three ways to send email in python. For more information, please follow other related articles on the PHP Chinese website!