关于java mail 发邮件的问题总结(转)

   今天项目中有需要用到java mail发送邮件的功能,在网上找到相关代码,代码如下:

import java.io.IOException;

import java.util.Properties;

import javax.mail.Message;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

public class SendMail {

  public static void main(String[] args) throws IOException, Exception {

    String host = "smtp.163.com"; //发件人使用发邮件的电子信箱服务器

     String from = "发件人的信箱"; //发邮件的出发地(发件人的信箱)

    String to = "收件人信箱"; //发邮件的目的地(收件人信箱)

     // Get system properties

      Properties props = System.getProperties();

      // Setup mail server

     props.put("mail.smtp.host", host);

     props.put("mail.smtp.port", 25);

     // Get session

     props.put("mail.smtp.auth", "true"); //这样才能通过验证

      MyAuthenticator myauth = new MyAuthenticator(from, "发件人的信箱密码");

       Session session = Session.getDefaultInstance(props, myauth);

      session.setDebug(true);

       // Define message

       MimeMessage message = new MimeMessage(session);

      // Set the from address

        message.setFrom(new InternetAddress(from));

      // Set the to address

      message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

        // Set the subject

      message.setSubject("测试程序!");

      // Set the content

      message.setText("这是用java写的发送电子邮件的测试程序!");

      message.saveChanges();

      Transport.send(message);

     }

   }

class MyAuthenticator extends javax.mail.Authenticator {

private String strUser;

private String strPwd;

public MyAuthenticator(String user, String password) {

this.strUser = user; this.strPwd = password;

}

protected PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(strUser, strPwd);

}

}

以上导入两个jar包是activation-1.1.1.jar、javax.mail-1.5.4.jar

然后测试结果,总出现下面的错误:

DEBUG SMTP: Found extension "STARTTLS", arg ""

DEBUG SMTP: Found extension "8BITMIME", arg ""

DEBUG SMTP: Attempt to authenticate using mechanisms:

LOGIN PLAIN DIGEST-MD5 NTLM DEBUG SMTP: AUTH LOGIN command trace suppressed

DEBUG SMTP: AUTH LOGIN failed Exception in thread "main" javax.mail.AuthenticationFailedException: 535 Error: authentication failed

at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:826) at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:761) at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:685) at javax.mail.Service.connect(Service.java:317) at javax.mail.Service.connect(Service.java:176) at javax.mail.Service.connect(Service.java:125) at javax.mail.Transport.send0(Transport.java:194) at javax.mail.Transport.send(Transport.java:124) at com.eversec.smart.common.utils.SendMail.main(SendMail.java:131)

后来找到问题了,发现有两个地方非常关键:

1、发件人邮箱一定要设置开启“POP3/SMTP/IMAP”,其中必须要设置“客户端授权密码”,否则出错;

2、发件人邮箱的密码很关键,就是这一句MyAuthenticator myauth = new MyAuthenticator(from, "发件人的信箱密码"); 此密码必须是上面设置的客户端授权密码,否则就要出现上面的错误。

http://www.cnblogs.com/zhh-bky/articles/4725209.html

时间: 2024-11-11 09:53:02

关于java mail 发邮件的问题总结(转)的相关文章

java实现发邮件的工具类,方便 好用(需要架包的Send Email To me)

原文:java实现发邮件的工具类,方便 好用(需要架包的Send Email To me) 源代码下载地址:http://www.zuidaima.com/share/1550463394794496.htm package com.zuidaima.util; import java.util.Properties; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; impor

Java实现发邮件功能---网易邮箱

目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自动邮件通知等. 本文以网易邮箱为例,通过Java代码实现发送邮件功能. 开发环境 请参照: 基于SpringBoot构建分模块项目 代码 pom.xml引入依赖 <properties> <java.version>1.8</java.version> <!-- 你的

System.Web.Mail发邮件引发0x80040217错误的解决过程

 使用System.Web.Mail 写了一个发送邮件程序,一直都工作正常. 最近更换新邮件服务器后,发送邮件时出现0x80040217错误. 从网上搜了一下,有用的结果不多,有说是Web.Mail过时,要改用system.net.mail等等. 后来跟踪代码,发现是进行到验证的步骤时出的问题,于是尝试去掉"@域名",真的可以了. 那为什么不提示用户名错误呢,通过使用控制台telnet测试发现, 新邮件服务的连接,在任何指令出错后都会立即断开,从而引发代码0x80040217错误.

通过java代码发邮件

用java发邮件,必须要导入新的包 mail.jar – 发邮件的核心包 activation.jar – 对用户和密码加密. 在mail.jar中有三个核心类: Javax.mail.Session – 是指与邮件服务器会话.整个项目中只要一个就可以了. Javax.mail.Message(接口)  - 准备发送数据信息. MimeMessage - 可以设置类型的数据信息. Transport – 它拥有一个方法可以发送Message. 第一步:导入两个jar包 第二步:发简单的邮件 @T

Java:发邮件

java 发邮件,有监控需要发送邮件到op通知很简单 直接调用 SendMail2.sendMail("[email protected]","报警信息") package com.stevezong.sendMail; import java.io.IOException; import java.util.Properties; import javax.mail.Authenticator; import javax.mail.BodyPart; import

linux使用mail发邮件

默认的mail不能对外发邮件,修改/etc/mail.rc,增加以下内容: set [email protected]set smtp=smtp.163.comset smtp-auth-user=report3set smtp-auth-password=passwordset smtp-auth=login 测试: echo "mailbody" | mail -s "subject" [email protected] mail -s "mail s

基于web的java Mail的邮件发送系统的详解

本系统是基于web的,引用了第三方的API:mail.jar开发包. 一.目录结构的介绍 我们可以到Oracle官网下载mail.jar开发包,我下载的版本是1.4.5.下载成功后,会得到一个javamail1_4_5.zip的文件,然后解压. 首先是根目录下的mail.jar是它的核心包 在lib子目录下有对应如下的jar包,其中mailapi.jar封装了创建邮件内容和面向普通开发人员调用邮件发送和接收的API类,其它三个jar文件(imap.jar.pop3.jar.smtp.jar)则是

Java实现发邮件功能

代码如下: package com.weimob.finance.utils;import java.io.UnsupportedEncodingException;import java.util.Date;import java.util.List;import java.util.Properties; import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.mail.M

javax.mail 发邮件时添加附件

import java.util.Properties; import javax.mail.Authenticator; import javax.mail.BodyPart; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import