2010-04-27 184 views
1

我得到编译器错误。任何人都可以调试吗?这段代码有什么问题

import javax.mail.*; 
import javax.mail.internet.*; 
import java.util.*; 
public class SendMail 
{ 
    public static void main(String [] args) 
    { 
    SendMail sm=new SendMail(); 
    sm.postMail("[email protected]","hi","hello","[email protected]"); 
    } 

public void postMail(String recipients[ ], String subject, String message , String from) throws MessagingException 
{ 
    boolean debug = false; 

    //Set the host smtp address 
    Properties props = new Properties(); 
    props.put("mail.smtp.host", "webmail.emailmyname.com"); 

    // create some properties and get the default Session 
    Session session = Session.getDefaultInstance(props, null); 
    session.setDebug(debug); 

    // create a message 
    Message msg = new MimeMessage(session); 

    // set the from and to address 
    InternetAddress addressFrom = new InternetAddress(from); 
    msg.setFrom(addressFrom); 

    InternetAddress[] addressTo = new InternetAddress[recipients.length]; 
    for (int i = 0; i < recipients.length; i++) 
    { 
     addressTo[i] = new InternetAddress(recipients[i]); 
    } 
    msg.setRecipients(Message.RecipientType.TO, addressTo); 


    // Optional : You can also set your custom headers in the Email if you Want 
    msg.addHeader("MyHeaderName", "myHeaderValue"); 

    // Setting the Subject and Content Type 
    msg.setSubject(subject); 
    msg.setContent(message, "text/plain"); 
    Transport.send(msg); 
} 
} 
+10

什么编译器错误? – 2010-04-27 18:17:48

+3

欢迎来到SO,javacode!你能更具体地了解你所得到的编译器错误以及它发生的地方吗? – Pops 2010-04-27 18:18:27

+1

嘿,我能够调试代码块格式,至少:) – 2010-04-27 18:20:18

回答

4

postMail功能期待的第一个参数,recipients是一个字符串数组,但在你的主要方法,则需要通过一个字符串。编译器告诉您,它无法找到与(String, String, String, String)等参数列表匹配的postMail方法的版本。

尝试调用它像这样代替:

sm.postMail(new String[]{"[email protected]"},"hi","hello","[email protected]"); 

另一个想法是让你的postMail方法的重载版本,如果这是您要经常做一些事情。

+1

请注意,在执行此操作之后,您必须在调用postMail()后处理MessagingException。 – Pops 2010-04-27 18:38:51

0

确保您已将mail.jaractivation.jar包括到您的类路径中。

+0

我已将两者都包含在classpath中 – user327136 2010-04-27 19:12:20