当前位置:  技术问答>java相关

发送邮件时需要进行身份认证的问题?

    来源: 互联网  发布时间:2015-06-29

    本文导语:  运行环境如下: Message newmsg = new MimeMessage(store.getSession()); // store 为 public class MaildirStore extends Store 的实例。 …… Store authenstore = (store.getSession()).getStore("pop3"); authenstore.connect("192.168.199.3","username","password"); /...

运行环境如下:

Message newmsg = new MimeMessage(store.getSession());
// store 为 public class MaildirStore extends Store 的实例。
……
Store authenstore = (store.getSession()).getStore("pop3");
authenstore.connect("192.168.199.3","username","password");
// authenstore 为 Store 的实例。
System.out.println("authen connect successfully");
Transport.send(newmsg);
报错如下:
authen connect successfully
SendFailedException: Sending failed;
SendFaildeException: Invalid Addresses;
SendFaildeException: 550 Local user only or Authentication mechanism
at javax.mail.Transport.send0
at javax.mail.Transport.send

///////////////////////////////////////
当有的邮件服务器发送邮件时,不需要身份认证,运行正常。
分析:(个人观点)
1。authenstore 为 Store 的实例  和  store 为 public class MaildirStore extends Store 的实例。是两个不同的进程,不能实现身份认证。可以在 Store 的继承类 store 中,定义 session.getStore("pop3"); 和 .connect() 的方法吗?我试了一下,不能直接定义。


2。 Session.getInstance(java.util.Properties, javax.mail.Authenticator)
这个方法大家见过吧,可以用 javax.mail.Authenticator  进行身份认证吗?如果可以,能告诉怎么应用吗?



|
我也遇见过类似的问题,不过我需要上面两种方法的结合才能解决问题,如果上面的方法不行,可以试试我的方法。

|
import javax.mail.*;

class MyAuthenticator extends Authenticator {
    private String userName,password;

    public MyAuthenticator(String userName,String password) {
        this.userName = userName;
        this.password = password;
    }

    public PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(userName,password);
    }
}


使用时:
        Properties prop = System.getProperties();
        MyAuthenticator auth = new MyAuthenticator(userName,password);
        Session session = Session.getDefaultInstance(prop,auth);


|




|
Properties props = new Properties();
props.put("mail.smtp.host",myHost);
props.setProperty("mail.transport.protocol","smtp");
props.setProperty("mail.smtp.auth","true");
Session session = Session.getInstance(props,             new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(myName,myPassword);
                }
            });

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • HTTP协议发送请求详解
  • 我想让内核向网卡发送数据时,不是立即发送,而是等我允许时再发送
  • TCP发送数据,假如发送套接口是非阻塞的,而要发送的数据大于缓冲区尺寸
  • socket发送端、接收端同一机器,kill掉接收端进程,发送端也被kill?
  • *** 高分, 请问如何发送一个事件, 比如发送一个Tab键? ***
  • 谁知道minicom监控VT100终端时候发送"F1"键是发送的什么转义字符呢?
  • 有没有谁实现了向IE浏览器那种“发送网页(P)”,把完整html格式发送给相应email?
  • 用sendto(socket, buf, strlen(buf), ...)发送一个包,如何得到发送的源地址(也就是本机的源地址)
  • postfix 在内网可以正常接收与发送邮件,但向局外,不能接收与发送
  • 串口应用程序,当对方发送大量的数据时,本方的数据无法发出。对方停止发送,本方的数据仍然无法发出。不知道是什么原因。
  • sendmail,内部发送接收可以,当用外部的域名,无法发送和接收,如163账号。
  • 如何将数据库里边的长度超过65535的数据打包发送发送?
  • 同多个线程通过同一个socket发送数据,操作系统底层会同步每个发送操作吗
  • 求助,udp文件传输发送端发送完了,接收端却接受到一半就bad address?
  • 通过短信发送LOG归类号码发送情况的shell脚本
  • 怎么用sendmail发送纯文本邮件,无论中英文都可显示,但如改用发送html格式的邮件,即message.setContent("Hello,this is content,后面
  • 数据包通过dev_queue_xmit发送出去,dev_queue_xmit返回值为0,但是对方收不到数据包 ,本机也抓不到发送出去的包
  • 请问在netfilter的forward点上怎么将原来从eth0发送的数据包转向由eth1发送啊?
  • oracle iis7站长之家
  • 怎样编程发送广播包?我的这段程序发送怎么返回值总是-1?
  • 使用perl发送带有附件的电子邮件是什么原理呀?不带附件得我已经发送成功了,希望指点


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3