com.sun.mail.smtp.SMTPSendFailedException:530-5.5.1需要validation
我正在尝试从我的Java应用程序向任何特定的电子邮件地址发送电子邮件。 我正在使用Java Mail API但不幸的是我收到了SMTPSendFailedException错误。 任何人都可以告诉我我在哪里犯了错误。 这是我的代码
import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; //import SeconMail.Authenticator; public class SendMail { public static void main(String [] args) { // Recipient's email ID needs to be mentioned. String to = "to@gmail.com"; // Sender's email ID needs to be mentioned String from = "from@expertflow.com"; // Assuming you are sending email from localhost String host = "smtp.gmail.com"; // Get system properties Properties properties = System.getProperties(); // Setup mail server properties.setProperty("mail.smtp.host", host); properties.put("mail.smtp.starttls.enable", "true"); properties.put("mail.smtp.auth", "false"); // Get the default Session object. Session session = Session.getDefaultInstance(properties); session.setDebug(true); 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(); } } }
properties.setProperty("mail.smtp.user", "abc"); properties.setProperty("mail.smtp.password", "xyz"); properties.setProperty("mail.smtp.auth", "true");
请尝试使用此function
创建会话时会覆盖PasswordAuthentication
方法,并在其中提供用户名和密码。
Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("pqr@gmail.com","xyz@123"); } });
试试这些
String login = "myemailhere"; String pass = "mypasshere"; properties.setProperty("mail.smtp.user", login); properties.setProperty("mail.smtp.password", pass); properties.setProperty("mail.smtp.auth", "true"); Transport transport = session.getTransport("smtp"); transport.connect(null, login, pass);
如果它仍然不适合你尝试这个:
properties.setProperty("mail.smtps.ssl.enable", "true"); properties.setProperty("mail.smtps.auth", "true");
也试试
Transport.send(message, user, pass);
我在Transport类文档中找到了这个
使用指定的用户名和密码对邮件服务器进行身份validation。
public static void send(Message msg, String user, String password) throws MessagingException { msg.saveChanges(); send0(msg, msg.getAllRecipients(), user, password); }
我正在使用JavaMail v 1.6.1和MailTrap SMTP服务器
我最近遇到了同样的问题。 我尝试使用API密钥+密码身份validation通过Gmail服务器发送电子邮件。 Transport.send(message)
对我不起作用,我调试它并发现它忽略了附加到message
会话设置。
现在,我通过身份validation和TLS通过SMTP Gmail服务器发送电子邮件。 我用过com.sun.mail:javax.mail-1.6.1
String host = "your-email-server-host"; // define your server host here int port = 587; // standard port for TLS connection // config session properties, here the SMTP protocol is used Properties properties = new Properties(); properties.setProperty("mail.smtp.host", host); properties.setProperty("mail.smtp.port", String.valueOf(port)); properties.setProperty("mail.smtp.auth", "true"); // enable auth properties.setProperty("mail.smtp.starttls.enable", "true"); // enable TLS // get session instace baed on the settings defined above Session session = Session.getInstance(properties); // `prepareMessage` implementation is omitted, construct your own message here MimeMessage mimeMessage = prepareMessage(email, session); // your credentials String username = "your-username@gmail.com"; // or API key, I used API key String password = "your-password"; // get the transport instance from the freshly created session // pass the valid protocol name, here the SMTP is used Transport transport = session.getTransport("stmp"); // connect to the transport instance with your credentials transport.connect(host, port, username,password); // send the message transport.sendMessage(mimeMessage, mimeMessage.getAllRecipients());
- 为什么我的applet得到java.security.AccessControlException:访问被拒绝(java.net.SocketPermission …),我该如何避免它?
- Java:在构造函数中抛出exception,我的对象是否仍然可以创建?
- 在Java中安排例外
- Eclipse中exception的断点 – 如何检查Exception对象?
- 常见的下溢和溢出exception
- 如何解决此错误java.util.ConcurrentModificationException
- 显示SQL错误消息
- 在程序中获得意外的输出
- JPA RollbackException持久化事务导致后续有效事务失败?