通过Java程序发送邮件(无法将套接字转换为TLS错误)
我在一个随机站点上尝试了以下代码,以测试在ubuntu 16.04中从java发送电子邮件 我已经包括了mail.api、smtp.jar通过Java程序发送邮件(无法将套接字转换为TLS错误),java,ubuntu,jakarta-mail,Java,Ubuntu,Jakarta Mail,我在一个随机站点上尝试了以下代码,以测试在ubuntu 16.04中从java发送电子邮件 我已经包括了mail.api、smtp.jar package com.javapapers.java; import java.util.Properties; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Session; import
package com.javapapers.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 JavaEmail {
Properties emailProperties;
Session mailSession;
MimeMessage emailMessage;
public static void main(String args[]) throws AddressException,
MessagingException {
JavaEmail javaEmail = new JavaEmail();
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 = { "joe@javapapers.com" };
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 = "your emailid here";//just the id alone without @gmail.com
String fromUserEmailPassword = "your email password here";
Transport transport = mailSession.getTransport("smtp");
transport.connect(emailHost, fromUser, fromUserEmailPassword);
transport.sendMessage(emailMessage, emailMessage.getAllRecipients());
transport.close();
System.out.println("Email sent successfully.");
}
}
package com.javapapers.java;
导入java.util.Properties;
导入javax.mail.Message;
导入javax.mail.MessaginException;
导入javax.mail.Session;
导入javax.mail.Transport;
导入javax.mail.internet.AddressException;
导入javax.mail.internet.InternetAddress;
导入javax.mail.internet.mimessage;
公共类JavaEmail{
财产和财产;
会议邮递会议;
mimessage电子邮件;
公共静态void main(字符串args[])引发AddressException,
消息异常{
JavaEmail JavaEmail=新的JavaEmail();
javaEmail.setMailServerProperties();
javaEmail.createEmailMessage();
javaEmail.sendmail();
}
public void setMailServerProperties(){
字符串emailPort=“587”;//gmail的smtp端口
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()引发AddressException,
消息异常{
字符串[]toEmails={”joe@javapapers.com" };
字符串emailSubject=“Java电子邮件”;
String emailBody=“这是一封由JavaMail api发送的电子邮件。”;
mailSession=Session.getDefaultInstance(emailProperties,null);
emailMessage=新的mimessage(mailSession);
for(int i=0;i
我得到以下错误(javac没有显示错误)
线程“main”javax.mail.MessaginException中出现异常:无法
将套接字转换为TLS
我只是linux的乞丐。请提供任何可能有帮助的命令。请添加并检查
emailProperties.put("mail.smtp.ssl.trust", "smtp.gmail.com");
更新:
资源链接:在课程结束时?
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");
emailProperties.put("mail.smtp.ssl.trust", "smtp.gmail.com"); // add here
}