Java发送邮件和python发送邮件

本文详细介绍使用Java和Python发送邮件的方法,包括配置SMTP服务器、编写邮件内容、添加附件等关键步骤,适用于需要通过程序发送通知或报告的场景。

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

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="")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值