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条)

报告相同问题?

悬赏问题

  • ¥15 做一个关于单片机的比较难的代码,然后搞一个PPT进行解释
  • ¥40 matlab简单代码修改补充
  • ¥15 python提取.csv文件中的链接会经常出现爬取失败
  • ¥15 数据结构中的数组地址问题
  • ¥15 maya的mel里,怎样先选择模型A,然后利用mel脚本自动选择有相同名字的模型B呢。
  • ¥15 Python题,根本不会啊
  • ¥15 会会信号与系统和python的来
  • ¥15 关于#python#的问题
  • ¥20 oracle RAC 怎么配置啊,配置
  • ¥15 excel 日常使用中出现问题