我使用的代碼,發現這裏的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