1、SMTP邮件服务器搭建:
创建一个邮件目录,如/opt/email,并进入/opt/email
mkdir email
cd /opt/email
2、在当前目录下编辑main.cf
myhostname = mail.yourcompany.com
mydomain = yourcompany.commyorigin = $mydomain
inet_interfaces = allinet_protocols = ipv4
mynetworks = 127.0.0.0/8, [::1]/128#此处决定你发送的邮件范围,多个用空格分开,比如要发送给111555555@qq.com则对应的域名为qq.com
relay_domains = tencent.com
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination
3、编辑docker-compose文件
version: '3'
services:
mailserver:
image: catatnight/postfixports:
- "0.0.0.0:9925:25"
volumes:- ./main.cf:/etc/postfix/main.cf:ro
- /disk1/send_email/mailserver/data:/var/mthunderbird:
image: jlesage/thunderbird
ports:
- "0.0.0.0:5800:5800"environment:
- DISPLAY_WIDTH=1280
- DISPLAY_HEIGHT=720volumes:
- /disk1/send_email/thunderbird/data:/config
4、部署和拉起容器
docker-compose up -d
5、 telnet localhost 9925 验证是否部署成功
6、发送邮件测试:
import os
import smtplib
from email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encodersimport time
import loggingclass SendEmail:
def __init__(self):
self.smtp_server = 'HOSTNAME'
self.port =PORTdef send(self,from_email,to_email_list,Cc,subject_title,content,filenamelist):
msg = MIMEMultipart()
msg['From'] = from_emailmsg['To'] = ",".join(to_email_list)
msg['Subject'] = subject_titleif Cc:
msg['Cc'] = ', '.join(Cc)msg.attach(MIMEText(content, 'plain'))
for each_file in filenamelist:
attachment = open(each_file, 'rb')part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= " + os.path.basename(each_file))
msg.attach(part)
with smtplib.SMTP(self.smtp_server, self.port) as server:
server.sendmail(from_email,to_email_list, msg.as_string())