今天项目中有需要用到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

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

  1. 关于使用Java Mail发邮件的问题

    今天做东西的时候突然遇到需要发邮件的问题,然后就使用SMTP协议进行邮件的发送.用了一个工具类简化邮件发送的功能, 在这次试验中,我使用了自己的QQ邮箱进行发送邮件的发送者. public class ...

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

    目录 Java实现发邮件功能 前言 开发环境 代码 效果 结束语 Java实现发邮件功能 前言 电子邮件的应用场景非常广泛,例如新用户加入,即时发送优惠清单.通过邮件找回密码.监听后台程序,出现异常自 ...

  3. shell中mail发邮件的问题

    今天为了监控一下脚本,按照网上说的利用mail 发邮件,mail -s "error预警2" peien@1221.qq.com<'邮件内容',发现出现cc,不知道啥问题,也 ...

  4. Java实现发邮件功能

    代码如下: package com.weimob.finance.utils;import java.io.UnsupportedEncodingException;import java.util. ...

  5. linux lnmp下无法使用mail发邮件的两种解决方法

    在配置了lnmp环境后,出现了mail函数不能发送邮件的问题,其实有两种方法,一是使用sendmail组件,而是使用postfix. 方法一,使用sendmail组件来发邮件  1.安装 sendma ...

  6. java ipv6发邮件需要注意的点

    和ipv4发邮件一样,毕竟ip只是用来找地址的,v4 v6使用上基本没区别. 但有一点得注意:java ipv6采用发送RST包来通知邮件服务器断开连接,这样会导致客户端抛 MessagingExce ...

  7. spring boot(16)-mail发邮件

    上一篇讲了如何处理异常,并且异常最终会写入日志.但是日志是写在服务器上的,我们无法及时知道.如果能够将异常发送到邮箱,我们可以在第一时间发现这个异常.当然,除此以外,还可以用来给用户发验证码以及各种离 ...

  8. java mail 接收邮件

    package com.mw.utils; import com.mw.bean.SmsAlarmLogBean; import javax.mail.*; import javax.mail.int ...

  9. 发现用System.Net.Mail发邮件(代码附后),附件稍微大一点就会造成程序假死. 有没有什么简单的解决办法呢? 多谢!!

    附件大,上传,发送一定会慢.程序卡,应该是主线程正在发送,邮件造成的.创建其他线程在后台去发.这样就不影响主线程做其他工作了   using System; using System.Collecti ...

随机推荐

  1. java大牛list

    1 Java的未来 Java能干什么.不能干什么,一开始就要搞清楚.这对于成为一个纯种的Java程序猿至关重要. 2 构建Java运行环境 Java运行在服务器,服务器都是Linux系统,对于真正程序 ...

  2. 移动端网页JS框架-手机触摸事件框架,日历框架带滑动效果

    swiper.js,hammer.js,mobiscroll http://www.mobiscroll.com/       日历

  3. struts2由&lt;s:tree&gt;要么dtree小工具 建立树

    一个 .<s:tree>方法: 1.引入新的标签: <%@ taglib prefix="sd" uri="/struts-dojo-tags" ...

  4. 在屏幕上建立ALV

    在屏幕上创建两个文本元素空件.一个推出按钮控件.一个定制控制按钮 代码所示: *&------------------------------------------------------- ...

  5. TPL异步并行编程之取消任务

    TPL异步并行编程之简单使用 在上篇随笔里面说明了Task的使用,仅仅是简单使用,有时候把一个任务交给Task去执行,但是呢还是要管理下,比如说:我要叫这个任务停止了,不做了,任务取消了,或者超时了 ...

  6. Qml 写的弹出层控件(13篇博客)

    QML弹出窗口组件,灯箱效果.动画效果,可拖拽 核心思路:一个mask层,一个最顶层,都用rectangle,禁止事件穿透 使用 Popup { id: popup width: 200; heigh ...

  7. phabricator在mac上的搭建(转)

    环境:OS X Yosemite 10.10.5 前提:phabricator主要是由php写的,而且是以website方式运行的,所以mac上要先安装好 php + nginx(或apache) + ...

  8. ExtJs4 笔记(7) Ext.tip.ToolTip 提示

    本篇介绍提示控件,ExtJs支持两种方式定义提示,可以支持普通html元素和一般的ExtJs UI控件. 一.基本提示 Ext.tip.ToolTip 1.最简单的提示 下面通过代码定义一个最简单的提 ...

  9. STL内存管理器的分配策略

    STL提供了很多泛型容器,如vector,list和map.程序员在使用这些容器时只需关心何时往容器内塞对象,而不用关心如何管理内存,需要用多少内存,这些STL容器极大地方便了C++程序的编写.例如可 ...

  10. Delphi面向对象设计的经验原则(61条)

    (1)所有数据都应该隐藏在所在的类的内部. (2)类的使用者必须依赖类的共有接口,但类不能依赖它的使用者. (3)尽量减少类的协议中的消息. (4)实现所有类都理解的最基本公有接口[例如,拷贝操作(深 ...