Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Email 用java发送电子邮件_Email_Java - Fatal编程技术网

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;
  }
});