import smtplib
from email.mime.text import MIMEText
mail_host = "smtp.163.com" # 设置服务器
mail_user = "****@163.com" # 用户名
mail_pass = "****" # 网易邮箱是密码(QQ邮箱是输入授权码,在qq邮箱设置 里用验证过的手机发送短信获得,不含空格)
sender = '****@163.com'
receivers = ['****@qq.com'] # 接收邮件列表,可设置为你的QQ邮箱或者其他邮箱
content="这不是垃圾邮件!!!!!!!!!!真的不是!!!!!!!!!别删我!!!!!!!!!!"
message = MIMEText(content, 'plain', 'utf-8')
message['From'] = "{}".format(sender)
message['To'] = ",".join(receivers)
subject ='导入任务完成' #邮件主题
message['Subject'] = subject
try:
smtpObj = smtplib.SMTP_SSL(mail_host,465)
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
smtpObj.quit()
print(u"邮件发送成功")
except smtplib.SMTPException as e:
print(str(e))
以上亲测可用,使用qq邮箱时易被识别为垃圾邮件导致无法发送,而且获取授权码较麻烦,所以采用网易邮箱发送。
邮件可能被识别为垃圾邮件,需要在邮箱中设置白名单即可正常接收
微信开启qq邮箱提醒后收到邮件即可自动提示,但如果安装了qq邮箱客户端则该提示会被屏蔽,需在qq邮箱客户端中设置:新邮件提醒-***@qq.com-取消“仅在客户端提示”
java版
package work;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class Mail {
public static String shouquan="111111";//授权码
public static String frommail="111111@163.com";//发件人
public static String tomail="2111111@qq.com";//收件人
public static String chaosongmail="111111@outlook.com";//抄送人
public static String subject="";//主题
public static String mailtext="";//正文
public static String fujian="";
public static String smtphost="smtp.163.com";
public static String smtpport="25";
public static void sendTextMail() {
Properties props = new Properties();
props.put("username",frommail);
props.put("password",shouquan);
props.put("mail.smtp.auth", "true");
props.put("mail.transport.protocol", "smtp" );
props.put("mail.smtp.host",smtphost);
props.put("mail.smtp.port",smtpport);
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession = Session.getDefaultInstance(props, new Authenticator() {
@Override protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(frommail,shouquan);
}});
sendMailSession.setDebug(true);
try {
Message mailMessage = new MimeMessage(sendMailSession);
mailMessage.setHeader("X-Mailer", "Microsoft Outlook Express 6.00.2900.2869");
mailMessage.setFrom(new InternetAddress(frommail));
mailMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(tomail));
// mailMessage.setRecipient(Message.RecipientType.CC,new InternetAddress(chaosongmail));//抄送,密送为BCC
mailMessage.setSubject(subject);
mailMessage.setSentDate(new Date());
if(fujian.equals("")){
mailMessage.setText(mailtext);//无附件时直接使用设置正文
}else{
MimeMultipart partList = new MimeMultipart();
mailMessage.setContent(partList);
//正文
MimeBodyPart text = new MimeBodyPart();
text.setText(mailtext);
partList.addBodyPart(text);
//可加多个附件
MimeBodyPart file1 = new MimeBodyPart();
file1.setDataHandler(new DataHandler(new FileDataSource(fujian)));
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
file1.setFileName("=?GBK?B?"+ enc.encode(fujian.getBytes()) + "?=");
partList.addBodyPart(file1);
}
Transport.send(mailMessage);
} catch (Exception e) {
e.printStackTrace();
}
}
public static String readcsv(String file) throws IOException{
BufferedReader reader=new BufferedReader(new FileReader(file));
String l,txt="";
while((l=reader.readLine()) !=null){
txt=txt+l;
}
reader.close();
return txt;
}
public static void main(String[] args) throws IOException {
mailtext=readcsv("D:/baidu/Desktop/project_ftp_loader/log/2017-04-18 14-00-01.log");
// fujian="D:/baidu/Desktop/y项变化情况.xlsx";
frommail="111111@163.com";
shouquan="ftms111111";
tomail="111111@qq.com";
subject="又是一个安静的晚上~";
sendTextMail();
}
}