java email发送邮件测试

1 篇文章 0 订阅

完整代码,亲测可以使用:点击打开链接

主要代码:

package test;
/**
 * 邮件测试类
 * QQ邮箱的测试可以使用,其他邮箱需要改几个地方:1.邮件服务器地址2.邮件服务器端口后3.账号4.密码,不一定时登录密码可能时授权码
 * QQ邮箱过程中出现错误,如果程序之前也可以运行成功的话,可以再次生成授权码,有这个原因的。还是不可以的话就请等一会,服务器也需要时间同步。
 */
public class SendEmail
{
    public static void main(String [] args)
    {    
    	 Mail mail = new Mail();  
         mail.setHost("smtp.qq.com"); 			//设置邮件服务器,如果不用QQ邮箱的,自己找找看相关的  
         mail.setPortNumber("465");   			//设置邮件服务器端口号,默认25
         mail.setSender("@qq.com");   			//发送人
         mail.setName("昵称");   					//发送人昵称
         mail.setReceiver("@qq.com"); 			//接收人  
         mail.setUsername("@qq.com"); 			//登录账号,一般都是和邮箱名一样
         mail.setPassword("zezniclvzosnfega");  //QQ邮箱登录第三方客户端时,密码框请输入“授权码”进行验证。其他的密码具体查看邮件服务器的说明
         mail.setSubject("标题");  
         mail.setMessage("<h1>内容</h1>");  
         if (new MailUtil().send(mail)) {
        	 System.out.println("发送成功");
		} else {
			 System.out.println("发送失败");
		} 
    }
}

package test;  
  
import java.io.Serializable;  
/**  
 * 邮件实体类  
 */  
public class Mail implements Serializable {  
    /**
	 * 序列号
	 */
	private static final long serialVersionUID = -3562218214168975242L;
	/**
	 * 邮件编码s
	 */
	public static final String ENCODEING = "UTF-8";  
    /**
     * 服务器地址  
     */
	private String host;
    /**
     * 服务器端口号
     */
    private String portNumber; 
    /**
     * 发件人的邮箱  
     */
    private String sender; 
    /**
     * 收件人的邮箱  
     */ 
    private String receiver; 
    /**
     * 发件人昵称  
     */ 
    private String name; 
    /**
     * 账号
     */  
    private String username;  
    /**
     * 密码
     */ 
    private String password; 
    /**
     * 主题  
     */
    private String subject;
    /**
     * 信息(支持HTML)
     */
    private String message; 
  
    public String getHost() {  
        return host;  
    }  
  
    public void setHost(String host) {  
        this.host = host;  
    }  
  
    public String getSender() {  
        return sender;  
    }  
    
    public String getPortNumber() {
		return portNumber;
	}

	public void setPortNumber(String portNumber) {
		this.portNumber = portNumber;
	}

	public void setSender(String sender) {  
        this.sender = sender;  
    }  
  
    public String getReceiver() {  
        return receiver;  
    }  
  
    public void setReceiver(String receiver) {  
        this.receiver = receiver;  
    }  
  
    public String getName() {  
        return name;  
    }  
  
    public void setName(String name) {  
        this.name = name;  
    }  
  
    public String getUsername() {  
        return username;  
    }  
  
    public void setUsername(String username) {  
        this.username = username;  
    }  
  
    public String getPassword() {  
        return password;  
    }  
  
    public void setPassword(String password) {  
        this.password = password;  
    }  
  
    public String getSubject() {  
        return subject;  
    }  
  
    public void setSubject(String subject) {  
        this.subject = subject;  
    }  
  
    public String getMessage() {  
        return message;  
    }  
  
    public void setMessage(String message) {  
        this.message = message;  
    }  
  
}  

package test;  
  
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
  
/**  
 * 邮件发送工具实现类  
 */  
public class MailUtil {  
  
    public boolean send(Mail mail) {  
        //发送email对象
        HtmlEmail email = new HtmlEmail();  
        try {  
            //这里是SMTP发送服务器的名字
            email.setHostName(mail.getHost());  
            //端口号不为空时,用户自定义的端口号为SMTP发送服务器端口号
            if (!"".equals(mail.getPortNumber())) {
            	email.setSSLOnConnect(true);  
            	email.setSslSmtpPort(mail.getPortNumber());
			}
            //字符编码集的设置  
            email.setCharset(Mail.ENCODEING);  
            //收件人的邮箱  
            email.addTo(mail.getReceiver());  
            //发送人的邮箱  
            email.setFrom(mail.getSender(), mail.getName());  
            // 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和密码  
            email.setAuthentication(mail.getUsername(), mail.getPassword());  
            // 要发送的邮件主题  
            email.setSubject(mail.getSubject());  
            // 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签  
            email.setMsg(mail.getMessage());  
            // 发送  
            email.send();  
            return true;  
        } catch (EmailException e) {  
            e.printStackTrace();  
            return false;  
        }  
    }  
}  
最后结果:


QQ邮箱开启POP3/SMTP服务:


常遇错误:

Could not connect to SMTP host: smtp.exmail.qq.com, port: 25;

错误分析:

点击打开链接

错误解决方式,修改服务器端口号,我改的465,因为587报错:

点击打开链接

文章参考:

QQ邮箱发送,"授权码":

点击打开链接

QQ邮箱发送,如何设置POP3/SMTP的SSL加密方式:

点击打开链接

发送邮件带图片、附件等方式:

点击打开链接

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值