Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何发送电子邮件?_Java_Android_Email - Fatal编程技术网

Java 如何发送电子邮件?

Java 如何发送电子邮件?,java,android,email,Java,Android,Email,我正在尝试开发一个应用程序,从特定的电子邮件id发送电子邮件。它不会执行并强制关闭,为什么?有没有办法发送电子邮件请看一下我的密码 public class MainActivity extends Activity { Button send = null; EditText mailid = null String emailId = null; ConnectivityManager conMan = null; NetworkInfo Info =

我正在尝试开发一个应用程序,从特定的电子邮件id发送电子邮件。它不会执行并强制关闭,为什么?有没有办法发送电子邮件请看一下我的密码

public class MainActivity extends Activity {
    Button send = null;
    EditText mailid = null
    String emailId = null;
    ConnectivityManager conMan = null;
    NetworkInfo Info = null;

     @Override
     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        send = (Button)findViewById(R.id.button1);
        mailid = (EditText)findViewById(R.id.editText1);
        send.setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(View arg0) {
                // TODO Auto-generated method stub
                conMan = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
                Info = conMan.getActiveNetworkInfo();
                emailId = mailid.getText().toString();

                if (Info == null) {
                    Toast.makeText(getApplicationContext(), "no net connection ", Toast.LENGTH_LONG).show();
                } else {
                    try {
                        GmailSender sender = new GmailSender("karuna.java@gmail.com", "heohiby");
                        sender.sendMail("This is Subject",
                            "This is Body how r u ..",
                            "karuna.java@gmail.com",
                            emailId);
                    } catch (Exception e) {
                        Log.e("SendMail", e.getMessage(), e);
                    }
                }
            }
        });
    }

}
这是Gmail发送器

public class GmailSender extends javax.mail.Authenticator {
    private String mailhost = "smtp.gmail.com";
    private String user;
    private String password;
    private Session session;
    static {
        Security.addProvider(new com.provider.JSSEProvider());
    }

    public GmailSender(String user, String password) {
        this.user = user;
        this.password = password;

        Properties props = new Properties();
        props.setProperty("mail.transport.protocol", "smtp");
        props.setProperty("mail.host", mailhost);
        props.put("mail.smtp.auth", "true");
        props.put("mail.smtp.port", "465");
        props.put("mail.smtp.socketFactory.port", "465");
        props.put("mail.smtp.socketFactory.class",
            "javax.net.ssl.SSLSocketFactory");
        props.put("mail.smtp.socketFactory.fallback", "false");
        props.setProperty("mail.smtp.quitwait", "false");

        session = Session.getDefaultInstance(props, this);
    }

    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication(user, password);
    }

    public synchronized void sendMail(String subject, String body, String sender, String recipients)throws Exception {
        try {
            MimeMessage message = new MimeMessage(session);
            DataHandler handler = new DataHandler(new ByteArrayDataSource(body.getBytes(), "text/plain"));
            message.setSender(new InternetAddress(sender));
            message.setSubject(subject);
            message.setDataHandler(handler);
            if (recipients.indexOf(',') > 0)
                message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipients));
            else
                message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipients));
            Transport.send(message);
        } catch (Exception e) {}
    }

    public class ByteArrayDataSource implements DataSource {
        private byte[]data;
        private String type;

        public ByteArrayDataSource(byte[]data, String type) {
            super();
            this.data = data;
            this.type = type;
        }

        public ByteArrayDataSource(byte[]data) {
            super();
            this.data = data;
        }

        public void setType(String type) {
            this.type = type;
        }

        public String getContentType() {
            if (type == null)
                return "application/octet-stream";
            else
                return type;
        }

        public InputStream getInputStream()throws IOException {
            return new ByteArrayInputStream(data);
        }

        public String getName() {
            return "ByteArrayDataSource";
        }

        public OutputStream getOutputStream()throws IOException {
            throw new IOException("Not Supported");
        }
    }
}
供应商呢

public final class JSSEProvider extends Provider {

    public JSSEProvider() {
        super("HarmonyJSSE", 1.0, "Harmony JSSE Provider");
        AccessController.doPrivileged(new java.security.PrivilegedAction < Void > () {
            public Void run() {
                put("SSLContext.TLS",
                    "org.apache.harmony.xnet.provider.jsse.SSLContextImpl");
                put("Alg.Alias.SSLContext.TLSv1", "TLS");
                put("KeyManagerFactory.X509",
                    "org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl");
                put("TrustManagerFactory.X509",
                    "org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl");
                return null;
            }
        });
    }
}
此处显示错误:

GmailSender sender = new GmailSender("karuna.java@gmail.com", "heohiby");

您目前的问题是您没有在
Android.manifest
中声明

该方法需要许可

您需要将其放入您的
Android.manifest
文件中


您目前的问题是您尚未在
Android.manifest
中声明

该方法需要许可

您需要将其放入您的
Android.manifest
文件中


清单中的权限是否正确

另外,请务必阅读以下内容:

以前的权限是:

?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="googlecode.email.to.sms" android:versionCode="2"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Email2SMSActivity" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>
<uses-sdk android:minSdkVersion="5" 
    android:maxSdkVersion="8"
    android:targetSdkVersion="7" />

<uses-permission
    android:name="com.google.android.providers.gmail.permission.READ_GMAIL" />
<uses-permission
    android:name="com.google.android.gm.permission.READ_GMAIL" />
<uses-permission 
    android:name="android.permission.GET_ACCOUNTS" />
</manifest> 
?xml version=“1.0”encoding=“utf-8”>

我已经有几年没有在Android上使用Gmail了,但希望这会有所帮助。

清单中的权限是否正确

另外,请务必阅读以下内容:

以前的权限是:

?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="googlecode.email.to.sms" android:versionCode="2"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".Email2SMSActivity" android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>
<uses-sdk android:minSdkVersion="5" 
    android:maxSdkVersion="8"
    android:targetSdkVersion="7" />

<uses-permission
    android:name="com.google.android.providers.gmail.permission.READ_GMAIL" />
<uses-permission
    android:name="com.google.android.gm.permission.READ_GMAIL" />
<uses-permission 
    android:name="android.permission.GET_ACCOUNTS" />
</manifest> 
?xml version=“1.0”encoding=“utf-8”>

我已经有几年没有在Android上使用Gmail了,但希望这会有所帮助。

java.lang.SecurityException:ConnectivityService:用户10075和当前进程都没有Android.permission.ACCESS\u NETWORK\u STATETry设置会话。setDebug(true);并检查它是否在GMailSender.java中运行!因为logcat错误显示:“java.lang.NoClassDefFoundError:com.yakshna.mail.GmailSender”。一旦尝试从其他站点下载jar文件并添加它们,当你编辑你的帖子时,请在编辑栏中写下发生了什么变化。现在有两个答案,它们都与您的问题无关,因为当您的问题更改时,您删除了以前的解释java.lang.SecurityException:ConnectivityService:用户10075和当前进程都没有android.permission.ACCESS\u NETWORK\u STATETry设置session.setDebug(true);并检查它是否在GMailSender.java中运行!因为logcat错误显示:“java.lang.NoClassDefFoundError:com.yakshna.mail.GmailSender”。一旦尝试从其他站点下载jar文件并添加它们,当你编辑你的帖子时,请在编辑栏中写下发生了什么变化。现在有两个答案,它们都与你的问题无关,因为当你的问题改变时,你删除了之前的解释。我这样做仍然不起作用。同样的问题是我的应用程序崩溃。但这不是同样的问题。如果您使用的是外部库,这可能会对您有所帮助,因为crashI所做的仍然无法工作。同样的问题是我的应用程序崩溃。但这不是同样的问题。如果您使用的是外部库而导致崩溃,则可能会对您有所帮助