1.发送邮件maven的依赖
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
2.发送各种邮件代码
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMessage {
public static void main(String[] args) throws AddressException,MessagingException {
Properties properties = new Properties();
properties.put("mail.transport.protocol", "smtp");// 连接协议
properties.put("mail.smtp.host", "xxxxx");// 主机名
properties.put("mail.smtp.port", 465);// 端口号
properties.put("mail.smtp.auth", "true");
properties.put("mail.smtp.ssl.enable", "true");// 设置是否使用ssl安全连接 ---一般都使用
properties.put("mail.debug", "true");// 设置是否显示debug信息 true 会在控制台显示相关信息
// 得到回话对象
Session session = Session.getInstance(properties);
// 获取邮件对象
Message message = new MimeMessage(session);
// 设置发件人邮箱地址
message.setFrom(new InternetAddress("xxxx"));
// 设置收件人邮箱地址
// message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress("xxx@qq.com"),new InternetAddress("xxx@qq.com"),new InternetAddress("xxx@qq.com")});
message.setRecipient(Message.RecipientType.TO, new InternetAddress("xxx@qq.com"));//一个收件人
// 设置邮件标题
message.setSubject("xmqtest");
// 设置邮件内容
message.setText("邮件内容邮件内容邮件内容xmqtest");
// 得到邮差对象
Transport transport = session.getTransport();
// 连接自己的邮箱账户
transport.connect("xxx@qq.com", "xxxxxxxxx");// 密码为QQ邮箱开通的stmp服务后得到的客户端授权码
// 发送邮件
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
}
python版
# -*- coding: UTF-8 -*-
import sys
import os
import smtplib
import time
from email import encoders
from email.header import Header
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email.utils import parseaddr, formataddr
reload(sys)
sys.setdefaultencoding('utf8')
def _format_addr(s):
name, addr = parseaddr(s)
return formataddr((Header(name, 'utf-8').encode(), addr))
pass
class EmailHandler(object):
# @property
# def _format_addr(s):
# name, addr = parseaddr(s)
# return formataddr((Header(name, 'utf-8').encode(), addr))
# 输入Email地址和口令
# from_addr,password,to_addr,smtp_server,title,result,filepath
def Me_email(self):
datestr = time.strftime('%Y%m%d', time.localtime(time.time()))
from_addr = 'aaaa@163.com' # 发送邮件的邮箱账号
password = '123456' # 发送邮件的邮箱密码,无需提供
to_addr = ['xx@qq.com'] # 接收邮件的邮箱账号
smtp_server = 'xx.xx.xxx.xxx' # 发送邮件邮箱的STMP服务器地址
filepath=['C:/Users/moumou/Desktop/1/1.xlsx']
title= datestr+'实时数据点位数据'
result='发送数据为实时数据请查收附件'
# 邮件对象
msg = MIMEMultipart()
msg['From'] = _format_addr('bibi <%s>' % from_addr) # 邮件发送人
msg['To'] = _format_addr('管理员 <%s>' % ",".join(to_addr)) # 邮件接收人
msg['Subject'] = Header('%s' % (title), 'utf-8').encode() # 邮件title
# 邮件正文是MIMEText
msg.attach(MIMEText(result, 'plain', 'utf-8'))
for i in range(len(filepath)):
# 添加附件就是加上一个MIMEBase,从本地读取一个图片
with open(filepath[i], 'rb') as f:
# 设置附件的MIME和文件名,这里是jpg类型
# mime = MIMEBase('测试_result', 'xlsx',filename = '测试_result.xlsx')
mime = MIMEBase(os.path.basename(filepath[i]).split('.')[0],
os.path.basename(filepath[i]).split('.')[1], filename=os.path.basename(filepath[i]))
# 加上必要的头信息
mime.add_header('Content-Disposition', 'attachment', filename=os.path.basename(filepath[i]))
mime.add_header('Content-ID', '<0>')
mime.add_header('X-Attachment-Id', '0')
# 把附件的内容读出来
mime.set_payload(f.read())
# 用Base64编码
encoders.encode_base64(mime)
# 添加到MIMEMultipart
msg.attach(mime)
server = smtplib.SMTP(smtp_server, 587)
server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, to_addr, msg.as_string())
server.quit()
if __name__ == '__main__':
Me_email(self="")