java原生126邮箱发送邮件代码实现

1.必要条件:

a.有126邮箱,并且要有授权码,授权码获取:

点击上图的设置,如下,确保这两个服务开启

在授权密码管理界面新增授权密码,记住新增的授权密码和下面的SMTP服务器名称,下面编码会用到

b.要下载 javax.activation / javax.mail 两个jar包,若是maven工程,直接导入pom依赖:

<dependency>
	    <groupId>com.sun.mail</groupId>
	    <artifactId>javax.mail</artifactId>
	    <version>1.6.2</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
	<dependency>
	    <groupId>javax.activation</groupId>
	    <artifactId>activation</artifactId>
	    <version>1.1.1</version>
	</dependency>

2.发送纯文本邮件代码实现:

//邮件发送方的邮箱
	private static String send="xxxxxx@126.com";
	//发送方的授权码(刚刚上面获取到的授权码)
	private static String password="xxxxxxxx";
	//邮件接收方的邮箱
	private static String to="xxxxx@outlook.com";
	private static Session session=null;
	private static MimeMessage msg=null;
	private static Transport transport=null;
	
	static {
		Properties p=System.getProperties();
		//设置邮件服务器
		p.setProperty("mail.host", "smtp.126.com");
		// 发送服务器需要身份验证
        p.setProperty("mail.smtp.auth", "true");
		//获取默认的Session对象
		session=Session.getInstance(p);
		//创建默认的MimeMessage
		msg=new MimeMessage(session);
		//设置发送方头部头字段
		try {
			//设置发送方的邮件地址
			msg.setFrom(new InternetAddress(send));
			//设置目标方(即收件人),若想发送给多人,第二个入参换成数组即可
			msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
			transport = session.getTransport();
	        // 连接邮件服务器
	        transport.connect(send, password);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		
	}
	
	/**
	 * 发送文本邮件
	 * @param subject 邮件主题
	 * @param content 邮件内容
	 * @throws AddressException
	 * @throws MessagingException
	 */
	public static void sendContext(String subject,String content) throws AddressException, MessagingException {

		//设置邮件主题
		msg.setSubject(subject);
			
		//设置邮件内容
		msg.setText(content);
		
        // 发送邮件
        transport.sendMessage(msg, new Address[]{new InternetAddress(to)});
        // 关闭连接
        transport.close();
	}

3.带附件的邮件:

/**
	 * 
	 * @param subject 邮件主题
	 * @param content 邮件内容
	 * @param filePath 附件文件路径
	 * @throws MessagingException
	 */
	public static void sendMsgAndAttachment(String subject,String content ,String filePath) throws MessagingException {
		// 创建消息部分
        BodyPart mbp = new MimeBodyPart();
        
		// 消息
        mbp.setText(content);
        // 创建多重消息
        Multipart multipart = new MimeMultipart();

        // 设置文本消息部分
        multipart.addBodyPart(mbp);

        // 附件部分
        mbp = new MimeBodyPart();
        DataSource source = new FileDataSource(filePath);
        mbp.setDataHandler(new DataHandler(source));
        int index=0;
		String sep="/";
		if(filePath.contains("\\")) {
			sep="\\";
		}
		
		
        if(filePath.lastIndexOf(sep)>0) {
        	index=filePath.lastIndexOf(sep);
        }
        String fileName=filePath.substring(index);
        mbp.setFileName(fileName);
        multipart.addBodyPart(mbp);
        
        msg.setSubject(subject);
        // 发送完整消息
        msg.setContent(multipart );

        //   发送消息
        Transport.send(msg,send,password);
        
        System.out.println("Sent message successfully....");
		
		
		
	}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值