首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >找不到异步任务/邮件。Mail.java显然在那里,那么问题是什么?

找不到异步任务/邮件。Mail.java显然在那里,那么问题是什么?
EN

Stack Overflow用户
提问于 2013-09-29 08:04:43
回答 1查看 94关注 0票数 0

我有一个安卓应用程序注册表单,它必须向用户发送一封成功的注册电子邮件,但是提交按钮的onClick,当我调用那个类时,我会收到以下错误:

代码语言:javascript
运行
复制
FATAL EXCEPTION: AsyncTask #1
 java.lang.RuntimeException: An error occured while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:200)
    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:125)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581)
    at java.lang.Thread.run(Thread.java:1019)
Caused by: java.lang.NoClassDefFoundError: net.asdqwe.utilities.Mail
    at net.asdqwe.utilities.EmailSender.sendEmail(EmailSender.java:8)
    at net.asdqwe.activities.Signup$sendVerificationEmail.doInBackground(Signup.java:308)
    at net.asdqwe.activities.Signup$sendVerificationEmail.doInBackground(Signup.java:1)
at android.os.AsyncTask$2.call(AsyncTask.java:185)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306)
    ... 4 more

下面是调用它的代码:

代码语言:javascript
运行
复制
public class Signup extends Activity implements OnClickListener,  {

@Override
    public void onClick(View arg0) {
    //some irrelevant code here

            Intent signupSuccessAvatarUpload = new Intent(getApplicationContext(), SignupSuccessAvatarUpload.class);
            signupSuccessAvatarUpload.putExtra("userEmailID", userEmail);
            try {
                new sendVerificationEmail().execute();
            } catch (Exception e) {}
            addNewContact();
            startActivityForResult(signupSuccessAvatarUpload, 1);
            //finish();
    }
class sendVerificationEmail extends AsyncTask<String, Void, String> {

        @Override
        protected String doInBackground(String... params) {
            try {
                emailSender.sendEmail(userEmail, configurationz.EMAIL_OFFICIAL_ADDRESS, configurationz.EMAIL_SUCCESSFUL_SIGNUP_SUBJECT, configurationz.EMAIL_SUCCESSFUL_SIGNUP_BODY(userName), null);
            } catch (Exception e) {}
            return null;
        }

    }
}

以下是电子邮件发件人类:

代码语言:javascript
运行
复制
package net.asdqwe.utilities;

import net.asdqwe.utilities.Mail;

public class EmailSender {
    public boolean sendEmail(String to, String from, String subject, String message, String[] attachements) throws Exception {
        Mail mail = new Mail();
        //code here
}

在同一个包中有Mail类:

代码语言:javascript
运行
复制
public class Mail extends javax.mail.Authenticator {
//lots of code here

public Mail() {
    host = "smtp.googlemail.com"; // default smtp server
    port = "465"; // default smtp port
    sport = "465"; // default socketfactory port

    user = ""; // username
    password = ""; // password
    from = ""; // email sent from
    subject = ""; // email subject
    body = ""; // email body

    _debuggable = false; // debug mode on or off - default off
    _auth = true; // smtp authentication - default on

    multipart = new MimeMultipart();

    // There is something wrong with MailCap, javamail can not find a
    // handler for the multipart/mixed part, so this bit needs to be added.
    MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
    mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
    mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
    mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
    mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
    mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
    CommandMap.setDefaultCommandMap(mc);
}

public Mail(String user, String pass) {
    this();

    this.user = user;
    password = pass;
}
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-29 08:24:15

您导入了javax.mail.Authenticator所需的jar文件了吗?

如果要使用javax.mail.Authenticator,则必须导入这些库。

  • mail.jar -包含实际的smtp植入
  • activation.jar - mail.jar需要

如果问题仍然存在,请清理项目并按照下面的说明进行。

邮件、活动和call this function from inside its default constructor中添加这段代码。

代码语言:javascript
运行
复制
private static void fixClassLoaderIssue()
{
   ClassLoader myClassLoader = YourClassName.class.getClassLoader();
   Thread.currentThread().setContextClassLoader(myClassLoader);
}  

这是一种尝试和错误的方法,但大多数情况下有效。

代码语言:javascript
运行
复制
Remove the libraries, clean the project, restart eclipse and import 
them again & "Android Tools > Fix Project Properties.

希望这能有所帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19075786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档