对文件进行邮件的定时生成和发送

本文详细介绍了如何在Linux上通过Docker构建SMTP邮件服务器(基于Postfix),配置docker-compose文件,以及使用Python编写代码发送邮件,包括设置SMTP服务器地址、端口以及附件的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1、SMTP邮件服务器搭建:

创建一个邮件目录,如/opt/email,并进入/opt/email

mkdir email

cd /opt/email

2、在当前目录下编辑main.cf

myhostname = mail.yourcompany.com
mydomain = yourcompany.com

myorigin = $mydomain
inet_interfaces = all

inet_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/postfix

    ports:
      - "0.0.0.0:9925:25"
    volumes:

     - ./main.cf:/etc/postfix/main.cf:ro
      - /disk1/send_email/mailserver/data:/var/m

 thunderbird:
    image: jlesage/thunderbird
    ports:
      - "0.0.0.0:5800:5800"

    environment:
      - DISPLAY_WIDTH=1280
      - DISPLAY_HEIGHT=720

   volumes:
      - /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 MIMEMultipart

from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

import time
import logging

class SendEmail:
    def __init__(self):
        self.smtp_server = 'HOSTNAME'
        self.port =PORT

def send(self,from_email,to_email_list,Cc,subject_title,content,filenamelist):

        msg = MIMEMultipart()
        msg['From'] = from_email

        msg['To'] = ",".join(to_email_list)
        msg['Subject'] = subject_title

        if 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())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会发paper的学渣

您的鼓励和将是我前进的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值