我使用的代码,发现这里的API:http://www.tutorialspoint.com/java/java_sending_email.htm发送电子邮件,而不是本地主机与
当我运行代码,我的错误输出是这样的:
com.sun.mail.util.MailConnectException: Couldn't connect to host, port: localhost, 25; timeout -1;
nested exception is:
java.net.ConnectException: Connection refused
at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2053)
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:697)
at javax.mail.Service.connect(Service.java:364)
at javax.mail.Service.connect(Service.java:245)
at javax.mail.Service.connect(Service.java:194)
at javax.mail.Transport.send0(Transport.java:253)
at javax.mail.Transport.send(Transport.java:124)
由于很明显,从第一行看,主要问题是“无法连接到主机,端口:本地主机”等等等等。
好的。那么,有没有人有任何想法我应该使用INSTEAD的本地主机?这完全不是我的专业领域。
(错误日志是相当长的时间,但是,有很多的代码,被周围的反弹。如果因任何原因,你想整个事情,让我知道,我会更新)
更新:
我想感谢StackOverflow社区的所有帖子,我已经看到这个主题的网站,以及帮助我回答这个问题的人。请在下面找到我的完成代码,它将收到一封电子邮件对象(来自另一个班级)并发送出去!请注意,我拿出了用户名和密码的Gmail帐户,显然:)
import java.util.ArrayList;
import java.util.Properties;
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendEmail
{
private class SMTPAuthenticator extends Authenticator
{
public PasswordAuthentication getPasswordAuthentication()
{
return new PasswordAuthentication("[email protected]", "password");
}
}
public void createAndSendEmailMessage(ArrayList<?> messageContents) throws MessagingException {
Email email = new Email();
email.setRecipient(messageContents.get(0) + "");
email.setSender("[email protected]");
email.setSubject(messageContents.get(1) + "");
email.setMessageContent(messageContents.get(2)+"");
sendEmailMessage(email);
}
public void sendEmailMessage(Email email) throws MessagingException {
// Get system properties
Properties props = System.getProperties();
props = new Properties();
props.put("mail.smtp.user", "[email protected]");
props.put("mail.smtp.host", "smtp.gmail.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.debug", "true");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.socketFactory.port", "587");
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
SMTPAuthenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
session.setDebug(false);
MimeMessage msg = new MimeMessage(session);
msg.setText(email.getMessageContent());
msg.setSubject(email.getSubject());
msg.setFrom(new InternetAddress(email.getSender()));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(email.getRecipient()));
Transport transport = session.getTransport("smtps");
transport.connect("smtp.gmail.com", 465, "username", "password");
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
}
}
因为我觉得很讨厌,当人们张贴代码的一部分,而不是调用它的代码,我要去向你展示,以及!
ArrayList<String> emailInfo = new ArrayList<String>();
emailInfo.add(userEmailAddress.getText()+"@gmail.com");
emailInfo.add("An account has been created for you!");
emailInfo.add("Here is a message");
SendEmail newEmail = new SendEmail();
try {
newEmail.createAndSendEmailMessage(emailInfo);
} catch (MessagingException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
看看'JavaMail' API。它有几个例子。 – 2014-11-14 17:54:33