oh-my-email icon indicating copy to clipboard operation
oh-my-email copied to clipboard

发送出现 NoClassDefFoundError: javax.activation.DataHandler

Open oy-paddy opened this issue 7 years ago • 5 comments

你好,根据你的栗子,我调用send函数后,会报错 java.lang.NoClassDefFoundError: javax.activation.DataHandler ,发送也失败。 据说要导入以下三个jia包。但是导入进去还是失败。。。

compile files('activation.jar')
compile files('mail.jar')
compile files('additionnal.jar')

我的代码如下:

package com.ouyang.sendmail;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

import javax.mail.MessagingException;

import io.github.biezhi.ome.OhMyEmail;

import static io.github.biezhi.ome.OhMyEmail.SMTP_QQ;

public class MainActivity extends Activity {
    private TextView tv_send;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        OhMyEmail.config(SMTP_QQ(true), "[email protected]", "sijkpqodxyslca17");
        tv_send = (TextView) findViewById(R.id.tv_send);
        tv_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {


                try {
                    OhMyEmail.subject("这是一封测试TEXT邮件")
                        .from("王爵的QQ邮箱")
                        .to("[email protected]")
                        .text("信件内容")
                        .send();
                    Toast.makeText(MainActivity.this,"发送成功~~~",Toast.LENGTH_SHORT).show();

                } catch (MessagingException e) {
                    Toast.makeText(MainActivity.this,"发送失败哦",Toast.LENGTH_SHORT).show();

                    e.printStackTrace();
                }


            }
        });
    }
}

oy-paddy avatar Oct 27 '17 03:10 oy-paddy

@oy-paddy 我测试是可以使用,先确认是不是开启了POP3/SMTP服务。如果没有开启,会抛异常,提示503

 OhMyEmail.config(OhMyEmail.SMTP_QQ(true), "[email protected]", "你的授权码");
        OhMyEmail.subject("这是一封测试TEXT邮件")
                .from("chenshun00的qq邮箱")
                .to("[email protected]")
                .text("信件内容")
                .send();

chenshun00 avatar Oct 30 '17 01:10 chenshun00

@chenshun00 服务我确认已经开启了,授权码我也填写正确了。 我调用 send 函数后,会报如下异常:

java.lang.NoClassDefFoundError: javax.activation.DataHandler

是不是还需要其他jar包支持呢?

oy-paddy avatar Oct 30 '17 01:10 oy-paddy

看起来这不是这个库所专有的问题,毕竟这个库只是把 javamail api 简单的包装了一下而已。既然这个问题不限于此项目,建议 Google 一下,能得到更多通用的解决方案,解决问题的几率比在这里要大得多。

andylizi avatar Oct 30 '17 02:10 andylizi

您好,发送大文件附件的时候,报错:io.github.biezhi.ome.SendMailException: com.sun.mail.smtp.SMTPSendFailedException: 451 Error: queue file write error

at io.github.biezhi.ome.OhMyEmail.send(OhMyEmail.java:308)
at io.github.biezhi.ome.OhMyEmailTest.testSendAttach(OhMyEmailTest.java:66)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

Caused by: com.sun.mail.smtp.SMTPSendFailedException: 451 Error: queue file write error

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2358)
at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:2110)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1316)
at javax.mail.Transport.send0(Transport.java:255)
at javax.mail.Transport.send(Transport.java:124)
at io.github.biezhi.ome.OhMyEmail.send(OhMyEmail.java:306)
... 25 more

请问有解决方法吗? 我的文件80到90M左右的MP4文件。

HeWanli avatar Apr 24 '19 11:04 HeWanli