简体   繁体   中英

Sending Email with Java Mail

I try to run a small Programm that sends an generic Email to my Account But I get an Exception:

  javax.mail.SendFailedException: Invalid Addresses;
  nested exception is:
    com.sun.mail.smtp.SMTPAddressFailedException: 553 We do not relay non-local mail, sorry.

    at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1873)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1120)
    at javax.mail.Transport.send0(Transport.java:195)
    at javax.mail.Transport.send(Transport.java:124)
    at SendEmail.main(SendEmail.java:54)
Caused by: com.sun.mail.smtp.SMTPAddressFailedException: 553 We do not relay non-local mail, sorry.

    at com.sun.mail.smtp.SMTPTransport.rcptTo(SMTPTransport.java:1724)
    ... 4 more

This is my Code

import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;

public class SendEmail
{
   public static void main(String [] args)
   {    
      // Recipient's email ID needs to be mentioned.
      String to = "Basti-V@web.de";

      // Sender's email ID needs to be mentioned
      String from = "Basti-V@web.de";

      // Assuming you are sending email from localhost
      String host = "localhost";

      // Get system properties
      Properties properties = System.getProperties();

      // Setup mail server
      properties.setProperty("mail.smtp.host", host);

      // Get the default Session object.
      Session session = Session.getDefaultInstance(properties);

      try{
         // Create a default MimeMessage object.
         MimeMessage message = new MimeMessage(session);

         // Set From: header field of the header.
         message.setFrom(new InternetAddress(from));

         // Set To: header field of the header.
         message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

         // Set Subject: header field
         message.setSubject("This is the Subject Line!");

         // Now set the actual message
         message.setText("This is actual message");

         // Send message
         Transport.send(message);
         System.out.println("Sent message successfully....");
      }catch (MessagingException mex) {
         mex.printStackTrace();
      }
   }
}

Im using the XAMPP Control Panel to run a Mercury Server. The Ports are 25,79,105,106,110,143 and 2224. Im new to this so maybe someone can push me in the right direction.

You must uncheck "Do not permit SMTP relaying of non-local mail" option.

See the link: uncheck option

Please check below two things. 1).where the host mail server is running. If it is running in local machine then set the host address as 0.0.0.0

2.If it is external mail server, check the mail credentials like username, password, host.

I think 553 is "denied error" from server, that means you have not provided correct credential .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM