前言
用java实现邮件发送,smtp服务器,Blog跳转:https://gryffinbit.top/2022/08/17/%E7%94%A8java%E5%AE%9E%E7%8E%B0%E9%82%AE%E4%BB%B6%E5%8F%91%E9%80%81%EF%BC%8Csmtp%E6%9C%8D%E5%8A%A1%E5%99%A8/
smtp服务器授权
我使用的是126的smtp服务。之前有自己搭建过smtp服务器,但会有两个问题,第一是用腾讯云服务器搭建的话,25端口需要申请,而且不能发邮件,可能封禁。第二就是自己搭建的smtp服务器,发送邮件大概率会被扔进垃圾箱。
126邮箱授权
开启smtp服务
开启成功后,会获得一个授权码,后面会用到。
代码
mail_username
是开启smtp服务,并获取到授权码的126邮箱。
mail_auth_password
是开启smtp服务后,获取到的授权码
sender
填写发件人的邮箱地址
def __init__(self):
中的内容,是一些固定的邮件发送需要的参数
sendcontextmail
这个函数,可以把参数去掉,我写这个py的时候,是需要自动获取,定制发送内容。如果不需要参数,可以直接去掉。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| import smtplib from email.header import Header from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart
class SMTP(): def __init__(self): self.mail_host = 'smtp.126.com' self.mail_username = '[email protected]' self.mail_auth_password = "xxxxxxx" self.sender = '[email protected]' self.init()
def init(self): self.sendcontextmail('test', 'test', 'admin')
def send_mail(self, receiver, subject, context): """使用126邮箱的 smtp 提供邮件支持""" message = MIMEText(context, 'html', 'utf-8') message['From'] = self.sender message['To'] = receiver message['Subject'] = Header(subject, 'utf-8')
try: smtpObj = smtplib.SMTP(self.mail_host, 25) smtpObj.login(self.mail_username, self.mail_auth_password) smtpObj.sendmail(self.sender, receiver, message.as_string()) print("邮件发送成功") except smtplib.SMTPException: print("Error: 无法发送邮件")
def sendcontextmail(self, username, passwd, usergroup): """可以自行定制邮件发送的内容""" self.receiver = "[email protected]" usergroup = usergroup.lower() context = "你的 svn 账号信息如下:</br>" context += "用户名:%s </br>" % username context += "密码:%s </br>" % passwd context += "属组:%s </br>" % str(usergroup) self.send_mail(self.receiver, "邮件主题", context)
if __name__ == "__main__": SMTP().init()
|
结果