内容有点长,我会叙述清楚,请知道了解的人士帮助解答.
我要利用java mail写一个应用小软件,先从接发邮件作起,下面这个最简单的程序用以发送邮件,
import javax.mail.*;
import javax.mail.internet.*;
import java.util.Properties;public class SendMailDemo
{
  public static void main(String args[])
{
int argc = args.length;
if (argc!=2)
{
System.out.println(" wrong syntax");
return;
                    }
String host = args[0];
String to = args[1];
   Properties prop = new Properties();
prop.put("mail.transport.default","smtp");
prop.put("mail.smtp.host","host");
try
{
Session mySession = Session.getInstance(prop,null);
Message message = new MimeMessage(mySession);
message.setSubject ("Test Message");
message.setContent("This is a test message...","text/plain");
InternetAddress toAddr = new InternetAddress(to);
message.setRecipient(Message.RecipientType.TO,toAddr);
InternetAddress fromAddr = new InternetAddress("[email protected]","morningq");
message.setFrom(fromAddr);
System.out.println("senting message!!");
Transport.send(message);
System.out.println("Message Sent");
}                     catch  (AddressException ae)
{ System.err.println("Invalid address"+ae);
}
    catch (MessagingException me)
{
System.err.println("Messaging failure:"+me);
} catch(Exception ex)
{
System.err.println("Failure"+ex);
}
}
}编译通过.按理说执行程序的命令行命令是这样的
java SendMailDemo mystmpserver myemail@mydomain但这个stmp server总提示host不存在.我知道应该是不能简单的写smtp.tom.com.然后我下载了ArGoSoft Mail Server Freeware 和 Fast Mail Server ,想将自己的机器设成stmp server ,但这两款英文的软件我不太会用.
最后我的问题是:
1.那个程序执行的时候 这样写命令行对不对:
    java SendMailDemo smtp.tom.com [email protected]   ??
    这样写又对不对
   java SendMailDemo 222.29.53.** [email protected]
   一个是本机ip,一个是我的邮箱
2.如果按后者写,是不是非要用相关邮件服务器软件将自己的机器变成smtp服务器?用我下的那软件就行吗??谢谢大家的解答

解决方案 »

  1.   

    // 我曾经写过的部分代码,供参考
      // 发送简单邮件
      public static boolean sendSimpleMail(){    
        try {
          Properties props = new Properties();      props.put("mail.smtp.host", smtpServer);      Session sendMailSession;
          if ("true".equals(smtpAuth)) {  //smtp服务器需要验证,用MyAuthertiactor来创建mail session
    //        props.put("mail.smtp.auth", smtpAuth);
            MyAuthenticator myauth = new MyAuthenticator(smtpUser, smtpPassword);
            sendMailSession = Session.getInstance(props, myauth);
          }
          else {
            sendMailSession = Session.getInstance(props);
          }      Message msg = new MimeMessage(sendMailSession);      msg.setFrom(new InternetAddress(strMailFrom, strMailFromName));  // 设置发件邮箱、发件人姓名
          msg.setRecipient(Message.RecipientType.TO, new InternetAddress(strMailTo, strMailToName));  // 设置收件邮箱、收件人姓名
    //      msg.setRecipient(Message.RecipientType.TO, new InternetAddress(strMailTo));  // 设置收件邮箱
    //      msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(strMailCC, false)); // 设置抄送邮箱
    //      msg.setRecipients(Message.RecipientType.BCC,InternetAddress.parse(strMailBCC, false)); // 设置暗送邮箱      msg.setSubject(strMailSubject);  // 设置邮件主题
          // -- 设置其他一些标头信息-- 
          msg.setHeader("X-Mailer", "LOTONtechEmail"); 
          msg.setSentDate(new Date());
          msg.setText(strMailBody);    // 设置邮件主体
          msg.saveChanges();//      Transport transport;
    //      transport = sendMailSession.getTransport("smtp");
    //      transport.send(msg, msg.getAllRecipients());
    //      transport.close();
          javax.mail.Transport.send(msg);       return true;
        }
        catch (Exception mailEx) {
          System.err.println("Send Mail Error:" + mailEx.getMessage());
          return false;
        }
      } 
      

  2.   

    本机不开邮件服务器用自己本机的IP做smtp.tom.com有什么用呢?
    下一个james邮件服务器 结合一下自己的例子测试一下 
    commons-email.jar有时间的话了解下也是不错地
      

  3.   

    prop.put("mail.smtp.host","host"); 变为prop.put("mail.smtp.host",host);看看是不是自己写错了。
      

  4.   

    JaredJared说的有道理 谢谢
    但是要用自己的ip做smtp服务器,非要用james吗?我用的易邮邮件服务器.怎么老说Unknow SMTP host呢???