3

localhost から gmail や yahoo などの外部アカウントにメールを送信する必要があります。現在、ローカル電子メールサーバーを起動して実行することにより、ローカルドメインからメールを送受信できるプログラムがあります(admin@ib-status.com <-> devteam@ib-status.com)。しかし、問題は、ローカル ドメインから gmail または yahoo アカウントに送信しようとすると、送信できないことです (例: admin@ib-status.com -> myaccount@gmail.com)。これについて助けが必要

PS。メールサーバーに Hmailserver を使用しています

public class JMailer {

          private static String HOSTNAME = "localhost";
            private static String USERNAME = "admin";
            private static String PASSWORD = "Mylocaldomainpassword";

            public static void main(String[] args) {
            try {  
                String to = "MygmailAccount@gmail.com";
                String from = "admin@ib-status.com";               
                Properties properties = System.getProperties();

                properties.setProperty("mail.smtp.host",HOSTNAME);
                Session session = Session.getInstance(properties, new Authenticator() {                
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(USERNAME, PASSWORD);
                    }
                });
                    MimeMessage message = new MimeMessage(session);
                    message.setFrom(new InternetAddress(from));
                    message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
                    message.setSubject("My Subject!");
                    message.setText("Here Goes My Message");                    
                    Transport.send(message);
                    System.out.println("Message Sending Completed");
                } catch (MessagingException mex) {
                    mex.printStackTrace();
                }
            }
}

Hmailserverログからの私のエラーは以下です

"SMTPC" 4508 0 "2014-06-13 15:18:01.022" "TCP" "SMTPDeliverer - メッセージ 13 - 接続に失敗しました: ホスト名: 74.125.25.27、メッセージ:ターゲット マシンがアクティブに拒否したため、接続できませんでした"

ここで何か見逃しましたか?リモート マシンの接続が拒否されるのはなぜですか? メッセージの送信に gmail の SMTP サーバーを使用したくない

4

2 に答える 2

1

これを試して。完璧に働いています!Gmail ID をsender@gmail.comに、Gmail のパスワードを password に入力します。

import com.sun.mail.smtp.SMTPMessage;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class SendmailSSl {
public static void main(String[] args) {
    Properties props = new Properties();
    props.put("mail.smtp.host", "smtp.gmail.com");
    props.put("mail.smtp.socketFactory.port", "465");
    props.put("mail.smtp.socketFactory.class",
            "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.auth", "true");
    props.put("mail.smtp.port", "805");

    Session session = Session.getDefaultInstance(props,new javax.mail.Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("sender@gmail.com","Password");
        }
    });

    try {

        SMTPMessage message = new SMTPMessage(session);
        message.setFrom(new InternetAddress("sender@gmail.com"));
        message.setRecipients(Message.RecipientType.TO,
                                 InternetAddress.parse( "reciver@gmail.com" ));

        message.setSubject("Testing Subject");
        message.setText("This is Test mail");
        message.setContent("This Is my First Mail Through Java");
        message.setNotifyOptions(SMTPMessage.NOTIFY_SUCCESS);
        int returnOption = message.getReturnOption();
        System.out.println(returnOption);        
        Transport.send(message);
        System.out.println("sent");

    }
     catch (MessagingException e) {
        throw new RuntimeException(e);         
     }
  }
}
于 2014-06-13T10:49:41.540 に答える