我在eclipse中编写这个应用程序我添加了所有的jar文件。我正在粘贴代码和错误。请让我知道我应该做些什么来正确运行应用程序。
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;
public class SendMail
{
public static void main(String [] args)
{
SendMail sm=new SendMail();
try{
sm.postMail(new String[]{"xyz@yahoo.com"},"hi","hello","abc@gmail.com");
}
catch(MessagingException e)
{
e.printStackTrace();
}
}
public void postMail( String recipients[ ], String subject, String message , String from) throws MessagingException
{
boolean debug = false;
//Set the host smtp address
Properties props = new Properties();
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.host", "smtp.gmail.com");
props.setProperty("mail.smtp.port", "25");
// create some properties and get the default Session
Session session = Session.getDefaultInstance(props, null);
session.setDebug(debug);
// create a message
Message msg = new MimeMessage(session);
// set the from and to address
InternetAddress addressFrom = new InternetAddress(from);
msg.setFrom(addressFrom);
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++)
{
addressTo[i] = new InternetAddress(recipients[i]);
}
msg.setRecipients(Message.RecipientType.TO, addressTo);
// Optional : You can also set your custom headers in the Email if you Want
msg.addHeader("MyHeaderName", "myHeaderValue");
// Setting the Subject and Content Type
msg.setSubject(subject);
msg.setContent(message, "text/plain");
Transport.send(msg);
}
}
错误:
com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. 13sm646598ewy.13
at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1829)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1368)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:886)
at javax.mail.Transport.send0(Transport.java:191)
at javax.mail.Transport.send(Transport.java:120)
at SendMail.postMail(SendMail.java:54)
at SendMail.main(SendMail.java:10)
答案 0 :(得分:1)
实际上,您还必须在使用smtps时设置smtps属性。
只需将邮件属性设置为包括:
mail.smtps.host
mail.smtps.auth
答案 1 :(得分:0)
您尝试通过需要加密连接的连接发送邮件(在这种情况下为TLS)。
这个太阳论坛有几个你可以尝试的解决方案: http://forums.sun.com/thread.jspa?threadID=617974
答案 2 :(得分:-1)
对于javamail到GMail SMTP,我使用以下属性:
mail.smtp.host="smtp.gmail.com"
mail.smtp.port="587"
mail.smtp.auth="true"
mail.smtp.starttls.enable="true"
我不知道GMail在25号接受邮件。也许这就是你问题的根源。
显然,您仍需要执行身份验证,通常是mail.smtp.user
和mail.smtp.password
。