Email 用java发送电子邮件
我正在创建一个应用程序,我想在其中向我的客户发送电子邮件。当我编译下面的代码时,它是可以的,但当我运行它时,它会给我以下错误Email 用java发送电子邮件,email,java,Email,Java,我正在创建一个应用程序,我想在其中向我的客户发送电子邮件。当我编译下面的代码时,它是可以的,但当我运行它时,它会给我以下错误 java code: import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; public class SendEmail { public static void main(String [] args) {
java code:
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.activation.*;
public class SendEmail
{
public static void main(String [] args)
{
String to = "prakash_d22@rediffmail.com";
String from = "web@gmail.com";
String host = "localhost";
Properties properties = System.getProperties();
properties.setProperty("smtp.gmail.com", host);
Session session = Session.getDefaultInstance(properties);
try{
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
message.setSubject("This is the Subject Line!");
message.setText("This is actual message");
Transport.send(message);
System.out.println("Sent message successfully....");
}catch (MessagingException mex) {
mex.printStackTrace();
}
}
}
错误:
请引导我
String host = "smtp.gmail.com";
Properties properties = new Properties();
设置以下属性
properties .put("mail.smtp.starttls.enable", "true");
properties .put("mail.smtp.host", host);
properties .put("mail.smtp.user", username);
properties .put("mail.smtp.password", password);
properties .put("mail.smtp.port", "587");
properties .put("mail.smtp.auth", "true");
你看过报纸了吗
无论如何,从我所能看出的问题是,您使用的配置无效
如您所见,JavaMail不支持名为smtp.gmail.com
的属性。你可能想要的其实是
properties.setProperty("mail.smtps.host", host);
我怀疑您希望使用,而不是像现在这样在localhost
上托管的,所以我建议更改您的代码,以便
final String host = "smtp.gmail.com";
您还希望使用authnetication,它JavaMail
建议您可以按如下方式进行操作:
properties.setProperty("mail.smtps.auth", "true");
请注意,Gmail需要身份验证才能发送邮件。另一个答案似乎建议您可以使用会话属性配置用户名/密码;不幸的是,这是错误的 你要做的是使用一个
我认为您需要为消息设置服务器属性。(我不知道确切的属性,这就是为什么这是一个评论,而不是一个答案)。如您所见,它试图连接到本地主机上的邮件服务器……除非您自己的计算机上运行邮件服务器,否则此调用只能失败代码>。请检查我的建议,告诉我们“传输”变量来自何处?按照我理解文档的方式,您必须将带有邮件参数的会话传递给该会话,以便它知道发送到何处。这是一个适合我的解决方案,mail.smtp.starttls.enable“或
”mail.smtp.password“
都不是标准属性。
properties.setProperty("mail.smtps.auth", "true");
final Session session = Session.getInstance(properties, new Authenticator() {
static final PasswordAuthentication AUTH = new PasswordAuthentication(USER, PASS);
protected PasswordAuthentication getPasswordAuthentication() {
return AUTH;
}
});