zxlcd 2009-01-28 14:40
浏览 903
已采纳

javamail发送邮件问题

package org.easyshop.ext;

import java.util.Date;
import java.util.Properties;

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

public class MailUtil {
static int port=25;
static String server="smtp.qq.com";
static String from="zxlcd520@qq.com";
static String user="zxlcd520";
static String password="*******";
public static void sendEmail(String email,String subject,String body){
try{
Properties props=new Properties();
props.setProperty("mail.transport.protocol","smtp");

props.put("mail.smtp.host",server);
props.put("mail.smtp.port",String.valueOf(port));
props.put("mail.smtp.auth","true");
//Transport transport=null;
MyAuthenticator myauth = new MyAuthenticator(user, password);
Session session=Session.getDefaultInstance(props,myauth);
session.setDebug(true);
//transport=session.getTransport("smtp");
//transport.connect(server,user,password);
MimeMessage msg=new MimeMessage(session);
msg.setSentDate(new Date());
InternetAddress fromAddress=new InternetAddress(from);
msg.setFrom(fromAddress);
InternetAddress[] toAddress=new InternetAddress[1];
toAddress[0]=new InternetAddress(email);
msg.setRecipients(Message.RecipientType.TO,toAddress);
msg.setSubject(subject,"GBK");
msg.setText(body,"GBK");
msg.saveChanges();
//transport.sendMessage(msg,msg.getAllRecipients());System.out.print("ok");
Transport.send(msg);
}catch(NoSuchProviderException e){
e.printStackTrace();
}catch(MessagingException e){
e.printStackTrace();
}
}
}
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);
}

}

[color=blue]以上是我javamail完整的代码,但是我调试了很久都不能成功,以下是调试信息.smtp服务器地址换成126的也不行,难道是现在的邮件服务器不支持客户端了?我是第一次用javamail有很多东西不知道请各位指点~~[/color]

[color=red]DEBUG: setDebug: JavaMail version 1.3.1
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.qq.com", port 25

220 esmtp6.qq.com Esmtp QQ Mail Server
DEBUG SMTP: connected to host "smtp.qq.com", port: 25

EHLO PC-200201012241
250-esmtp6.qq.com
250-PIPELINING
250-SIZE 52428800
250-AUTH LOGIN
250-AUTH=LOGIN
250 8BITMIME
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "SIZE", arg "52428800"
DEBUG SMTP: Found extension "AUTH", arg "LOGIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
NDU0NzczMDk1
334 UGFzc3dvcmQ6
MTk4ODAxMjAzMTQ0NTQ=
454 Authentication failed
javax.mail.SendFailedException: Sending failed;
nested exception is:
class javax.mail.AuthenticationFailedException
at javax.mail.Transport.send0(Transport.java:218)
at javax.mail.Transport.send(Transport.java:80)[/color]
[b]问题补充:[/b]
TO:lewhwa
谢谢。我试了N次终于成功了,是的,程序完全没有问题。
原因是126邮箱已经不支持SMTP/POP3了。我用OUTLOOK连不上。后面用QQ试了半天终于在开启SMTP/POP3后成功了。但问题是这样的,我想实现一个网站注册时给新用户发激活邮件,这样如果像126这样或QQ邮箱(默认是不开启SMTP/POP3的)是收不到我用客户羰发的邮件!那该怎么办呢?
[b]问题补充:[/b]
TO:lewhwa
呵呵,我理解你的意思,但是如果接收方没有POP3会被退信的。我刚刚就试过向126邮箱发信但都被退回了,后面只好向另一个QQ邮箱发~

  • 写回答

5条回答 默认 最新

  • wwwghost 2009-01-30 01:16
    关注

    [quote]呵呵,我理解你的意思,但是如果接收方没有POP3会被退信的。我刚刚就试过向126邮箱发信但都被退回了,后面只好向另一个QQ邮箱发~[/quote]
    用上面的程序发,邮件都要写全。POP3是收信的,与发信的没有太大的关系。126可能是SMTP禁用,只是对客户端禁用。它肯定能介绍邮件的,要不还有什么存在的必要。否则,它会成为茫茫Internet上的一个孤岛!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R