Java 如何发送电子邮件?
我正在尝试开发一个应用程序,从特定的电子邮件id发送电子邮件。它不会执行并强制关闭,为什么?有没有办法发送电子邮件请看一下我的密码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 =
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所做的仍然无法工作。同样的问题是我的应用程序崩溃。但这不是同样的问题。如果您使用的是外部库而导致崩溃,则可能会对您有所帮助