欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

javaMail学习(四)——使用javaMail给网易账户发简单邮件

程序员文章站 2024-01-07 15:42:40
...

代码跟上一篇的差不多,只需改变smpt的服务器地址和端口号。

package com.wjl.mail.utils;

import java.security.GeneralSecurityException;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.Message.RecipientType;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * 邮 件 发 送 的 工 具 类
 * 1 6 3 邮 箱 互 相 发 送 消 息
 */
public class MailUtils3 {
	private static String userName = "xxxx";//发 送 邮 件的1 6 3邮 箱 账 号
	private static String password = "xxxx";//1 6 3 邮 箱 的 授 权 码,若 没 有 则 使 用 密 码
	private static String userName2 = "xxxx";//接 收 邮 件 的 1 6 3 邮 箱 账 号
	private static String port = "25";//端 口 号
	/**
	 * 该 方 法 用 来 发 送 邮 件
	 * @param to:给 谁 发 邮 件
	 * **/
	public static void sendMain(String to) throws AddressException, MessagingException, GeneralSecurityException{
		//1、创 建 连 接 对 象,连 接 到 邮 箱 服 务 器
		Properties props = new Properties();
		//开 启debug调试  
        props.setProperty("mail.debug", "true");  
        //stmp服务器需要进行身份验证,也就是有 户 名和密 码的校验,这样才能通过验证
        props.setProperty("mail.smtp.auth", "true"); 
        //发送邮件协议名称  
        props.setProperty("mail.transport.protocol", "smtp");  
        //设置邮件服务器主机名  
        props.setProperty("mail.host", "smtp.163.com");//设置成163的发件服务器
        
        //设端口号(该配置可写可不写)
        props.setProperty("mail.smtp.port", port);
        
        //密 码、授 权 码
        props.setProperty("mail.smtp.password",password);
		
		//Authenticator:认证信息
		Session session = Session.getInstance(props, new Authenticator(){
			@Override
			protected PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication(userName,password);//使用它给其他账户发邮件
			}
		});
		
		//2、创建邮件对象
		Message message = new MimeMessage(session);
		//2.1设置发件人
		message.setFrom(new InternetAddress(userName));
		//2、2设置收件人
		message.setRecipient(RecipientType.TO, new InternetAddress(to));
		//2.3邮件的主题
		message.setSubject("测试发消息");
		//2.4邮件的正文(即邮件的内容)
		message.setContent("测试邮件:javaMail-网 易 邮 箱测试","text/html;charset=utf-8");
		
		//3.发送邮 件
		Transport trans = session.getTransport();
		//连接邮 件服务器
        trans.connect(userName, password);  
		//发送邮 件
        trans.sendMessage(message, message.getAllRecipients());  
        //关 闭连接
        trans.close();
        
        //Transport.send(message);(两种方式都可以)
		System.out.println("发送成功");
	}
	
	public static void main(String[] args) {
		try {
			sendMain(userName2);
		} catch (Exception e) {
			e.printStackTrace();
		} 
	}
}

 

在Foxmail中添加网易邮箱账户进行邮件查看。
javaMail学习(四)——使用javaMail给网易账户发简单邮件
            
    
    博客分类: javaMail javaMail给 网 易 邮 箱发邮 件 

 

注意点:发送邮件的163 邮 箱的smtp必须处于开启状态。

查看是否开启:

通过网页登陆网易邮箱---->设置---->POP9/SMTP/IMAP---->设置POP9/SMTP/IMAP。

默认情况下,SMTP和POP3的服务处于开 启状态。若处于关 闭状态,执行代码将报错:javax.mail.AuthenticationFailedException: 550 User has no permission

 

值得一提的是网 易 邮 箱的密 码和授 权 码。

如上文所说,默认情况下网 易 邮 箱的smtp服务是开 启的,此时上面代码中的password使用邮 箱 账 户的密  码即可

手动将smtp服务其关 闭,再手动开 启,此时网易会要求设置授权码,设置授权码比较简单,根据提示进行设置即可(硬性要求:授权码只能是数字和字母,且不能与密 码一致)。设置之后,上面代码中的password必须使用授权码,否则将报错:javax.mail.AuthenticationFailedException: 535 Error: authentication failed

 

PPS:敏 感 词 应该是开 启、关 闭、邮 箱、密 码、授 权 码

  • javaMail学习(四)——使用javaMail给网易账户发简单邮件
            
    
    博客分类: javaMail javaMail给 网 易 邮 箱发邮 件 
  • 大小: 24.1 KB

上一篇:

下一篇: