Java Mail:无法通过Yahoo发送电子邮件 [英] Java Mail: Unable to send email via Yahoo
本文介绍了Java Mail:无法通过Yahoo发送电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
请看下面的代码。
package email;
import java.awt.*;
import java.awt.event.*;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;
public class SendEmail
{
private String to, from, bcc, cc, account, message, password, subject;
public SendEmail(String to, String from,String bcc, String cc, String account, String message, String password, String subject)
{
setFrom(from);
setTo(to);
setBCC(bcc);
setCC(cc);
setAccount(account);
setMessage(message);
//setUserName(userName);
setPassword(password);
setSubject(subject);
}
//Setters
public void setFrom(String from)
{
this.from = from;
}
public void setTo(String to)
{
this.to = to;
}
public void setBCC(String bcc)
{
this.bcc = bcc;
}
public void setCC(String cc)
{
this.cc = cc;
}
public void setMessage(String message)
{
this.message = message;
}
/* public void setUserName(String userName)
{
this.userName = userName;
}*/
public void setPassword(String password)
{
this.password = password;
}
public void setAccount(String account)
{
this.account = account;
}
public void setSubject(String subject)
{
this.subject = subject;
}
//Getters
public String getFrom()
{
return from;
}
public String getTo()
{
return to;
}
public String getBcc()
{
return bcc;
}
public String getCC()
{
return cc;
}
public String getMessage()
{
return message;
}
/*public String getUserName()
{
return userName;
}*/
public String getPassword()
{
return password;
}
public String getAccount()
{
return account;
}
public String getSubject()
{
return subject;
}
//This method is used to send the email
public String send()
{
String result = "";
try
{
Session mailSession = Session.getInstance(getProperties(), new PasswordAuthenticator());
MimeMessage msg = new MimeMessage(mailSession);
msg.setFrom(new InternetAddress(from));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
msg.setSubject(subject);
msg.setText(message);
Transport.send(msg);
result = "Mail Sent";
}
catch(Exception e)
{
result = "An error Occured";
e.printStackTrace();
}
return result;
}
//This method will return properties appropreiate for the email account
public Properties getProperties()
{
Properties props = new Properties();
if(getAccount().equals("GMail"))
{
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host","smtp.gmail.com");
props.put("mail.smtp.port","587");
}
else if(getAccount().equals("Yahoo"))
{
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.socketFactory.port","465");
props.put("mail.smtp.socketFactory.class","javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.host","smtp.mail.yahoo.com");
props.put("mail.smtp.port","465");
}
return props;
}
//This class Authnticates the password
private class PasswordAuthenticator extends Authenticator
{
@Override
protected PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication(getFrom(), getPassword());
}
}
}
在这里,如果我选择GMail,没问题。但是,如果我尝试使用Yahoo发送电子邮件,则会出现以下错误
In here, if I select GMail, no issue. But if I try to send email using Yahoo, the following error occurs
javax.mail.AuthenticationFailedException:530访问被拒绝
javax.mail.AuthenticationFailedException: 530 Access denied
雅虎的邮件地址和密码被正确提供,但这个问题是继续下去的。为什么是这样?请帮助!
Yahoo mail address and password is given correctly, but this issue is keep on coming. Why is this? Please help!
推荐答案
登录时尝试不使用@ yahoo.com,只是您的用户名
When logging on try not using the "@yahoo.com", just your user name
这篇关于Java Mail:无法通过Yahoo发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文