抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

前言

用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
# 第三方 SMTP 服务

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对象,使用非SSL协议端口号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) # 邮箱发送时的object主题

if __name__ == "__main__":
# while True:
SMTP().init()

结果

评论