2015-12-21 93 views
1

我想用javax.mail发送电子邮件。当我运行下面的代码时,它给了我这个错误没有hwangheera4hagarmaher的提供者。问题在哪里,我该如何解决这个错误?使用javax发送电子邮件?

我使用的代码是这样的:

public static boolean SendMail (String subject, String from, String Password, String Message, String to[]) 
{ 
    String Host = "[email protected]"; 

    Properties Property = System.getProperties(); 
    Property.put("mail.hwangheera4hagarmaher.starttls.enable", true); 
    Property.put ("mail.hwangheera4hagarmaher.host", Host); 
    Property.put ("mail.hwangheera4hagarmaher.user", from); 
    Property.put ("mail.hwangheera4hagarmaher.password", Password); 
    Property.put ("mail.hwangheera4hagarmaher.port", 587); 
    Property.put ("mail.hwangheera4hagarmaher.auth", "true"); 

    Session session = Session.getDefaultInstance(Property, null); 

    MimeMessage message = new MimeMessage (session); 

    try 
    { 
     message.setFrom(new InternetAddress (from)); 

     InternetAddress [] toAddress = new InternetAddress[to.length]; 

     for (int i = 0; i < to.length; i++) 
     { 
      toAddress [i] = new InternetAddress (to[i]); 
     } 

     for (int i = 0; i < toAddress.length; i++) 
     { 
      message.addRecipient(RecipientType.TO, toAddress[i]); 
     } 

     message.setSubject (subject); 
     message.setText(Message); 

     Transport transport = session.getTransport("hwangheera4hagarmaher"); 
     transport.connect (Host, from, Password); 
     transport.sendMessage(message, message.getAllRecipients()); 
     transport.close(); 

     return true; 
    } 
    catch (MessagingException ex) 
    { 
     showMessageDialog (null, ex); 
    } 
return false; 
} 

回答

1

替换hwangheera4hagarmaher在所有道具smtpgetTransport()除非已经编写了这个名字自己的供应商。

您的主机名应该是服务器,而不是电子邮件地址。也许smtp.gmail.com

默认情况下,谷歌提供了安全预防措施使用任何外部访问,特别是如果你使用一些电子邮件框架来访问您的帐户,首先你需要给访问,在您的帐户登录,然后去:

https://accounts.google.com/DisplayUnlockCaptcha

然后按照其余的步骤访问您的帐户。

+0

现在这个错误消失了,但gmail阻止了代码发送邮件:/ –

+0

这应该有所帮助:https://support.google.com/accounts/answer/6010255?hl=zh-CN – Jan

+0

是否解决了您的问题(请参阅编辑?) – Jan