私は、JavaMailのとSMTP(Gmailの)、ここに私のコードです使用しています:はSTARTTLSコマンド最初にJavaを発行する必要があります
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Email {
Properties emailProperties;
Session mailSession;
MimeMessage emailMessage;
public static void main(String args[]) throws AddressException,
MessagingException {
Email javaEmail = new Email();
javaEmail.setMailServerProperties();
javaEmail.createEmailMessage();
javaEmail.sendEmail();
}
public void setMailServerProperties() {
String emailPort = "587";//gmail's smtp port
emailProperties = System.getProperties();
emailProperties.put("mail.smtp.port", emailPort);
emailProperties.put("mail.smtp.auth", "true");
emailProperties.put("mail.smtp.starttls.enable", "true");
}
public void createEmailMessage() throws AddressException,
MessagingException {
String[] toEmails = { "[email protected]" };
String emailSubject = "Java Email";
String emailBody = "This is an email sent by JavaMail api.";
mailSession = Session.getDefaultInstance(emailProperties, null);
emailMessage = new MimeMessage(mailSession);
for (int i = 0; i < toEmails.length; i++) {
emailMessage.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmails[i]));
}
emailMessage.setSubject(emailSubject);
emailMessage.setContent(emailBody, "text/html");//for a html email
//emailMessage.setText(emailBody);// for a text email
}
public void sendEmail() throws AddressException, MessagingException {
String emailHost = "smtp.gmail.com";
String fromUser = "yourusername";//just the id alone without @gmail.com
String fromUserEmailPassword = "your_password";
Transport transport = mailSession.getTransport("smtp");
transport.connect(emailHost, fromUser, fromUserEmailPassword);
transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
transport.close();
System.out.println("Email sent successfully.");
}
}
エラーメッセージ:
Exception in thread "main" javax.mail.MessagingException: 530 5.7.0
Must issue a STARTTLS command first. n80sm23847952pfi.25 - gsmtp
at
com.sun.mail.smtp.SMTPTransport.issueCommand(SMTPTransport.java:1020)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:716)
at
com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:388)
at com.mail.Email.sendEmail(Email.java:68) at
com.mail.Email.main(Email.java:26)
はい、有効なユーザー名とパスワードを提供しています。その行を変更すると、次のエラーが発生します。スレッド "main"の例外javax.mail.NoSuchProviderException:smtpsのプロバイダがありません \t at javax.mail.Session.getProvider(Session.java:436) \t at javax.mail .Session.getTransport javax.mail.Session.getTransport(Session.java:612)で(Session.java:631) \t com.mail.Email.sendEmailで\t(Email.java:65) \t COMました。 mail.Email.main(Email.java:26) –
この質問のようです:http://stackoverflow.com/questions/2980408/java-mail-no-provider-for-smtp –
サポートjars:mail.jarとactivation.jarがクラスパスに存在します。 –