Hi, I want to build apps to send mail using javamail, but there is
error ,

code:


package com.kirimmail;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class KirimMailActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Button addImage = (Button) findViewById(R.id.send_email);
        addImage.setOnClickListener(new View.OnClickListener() {
          public void onClick(View view) {
            mail m = new mail("address mail", "address mail");

            String[] toArr = {"address mail", ""};
            m.setTo(toArr);
            m.setFrom("address mail");
            m.setSubject("This is an email sent using my Mail JavaMail
wrapper from an Android device.");

            m.setBody("Email body.");
            try {
              m.addAttachment("/sdcard/filelocation");

              if(m.send()) {
                Toast.makeText(KirimMailActivity.this, "Email was sent
successfully.", Toast.LENGTH_LONG).show();
              } else {
                Toast.makeText(KirimMailActivity.this, "Email was not
sent.", Toast.LENGTH_LONG).show();
              }
            } catch(Exception e) {
              //Toast.makeText(MailApp.this, "There was a problem
sending the email.", Toast.LENGTH_LONG).show();
              Log.e("KirimMailActivity", "Could not send email", e);
            }
          }
        });
      }
}


and then :

package com.kirimmail;


import java.util.Date;
import java.util.Properties;
import javax.activation.CommandMap;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.activation.MailcapCommandMap;
import javax.mail.BodyPart;
import javax.mail.Multipart;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;


public class mail extends javax.mail.Authenticator {
  private String _user;
  private String _pass;

  private String[] _to;
  private String _from;

  private String _port;
  private String _sport;

  private String _host;

  private String _subject;
  private String _body;

  private boolean _auth;

  private boolean _debuggable;

  private Multipart _multipart;



  public mail() {
    _host = "smtp.gmail.com"; // default smtp server
    _port = "465"; // default smtp port
    _sport ="465"; // default socketfactory port

    _user = ""; // username
    _pass = ""; // 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();

    _user = user;
    _pass = pass;
  }

  public boolean send() throws Exception {
    Properties props = _setProperties();

    if(!_user.equals("") && !_pass.equals("") && _to.length > 0 && !
_from.equals("") && !_subject.equals("") && !_body.equals("")) {
      Session session = Session.getInstance(props, this);

      MimeMessage msg = new MimeMessage(session);

      msg.setFrom(new InternetAddress(_from));

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

      msg.setSubject(_subject);
      msg.setSentDate(new Date());

      // setup message body
      BodyPart messageBodyPart = new MimeBodyPart();
      messageBodyPart.setText(_body);
      _multipart.addBodyPart(messageBodyPart);

      // Put parts in message
      msg.setContent(_multipart);

      // send email
      Transport.send(msg);

      return true;
    } else {
      return false;
    }
  }

  public void addAttachment(String filename) throws Exception {
    BodyPart messageBodyPart = new MimeBodyPart();
    DataSource source = new FileDataSource(filename);
    messageBodyPart.setDataHandler(new DataHandler(source));
    messageBodyPart.setFileName(filename);

    _multipart.addBodyPart(messageBodyPart);
  }

  @Override
  public PasswordAuthentication getPasswordAuthentication() {
    return new PasswordAuthentication(_user, _pass);
  }

  private Properties _setProperties() {
    Properties props = new Properties();

    props.put("mail.smtp.host", _host);

    if(_debuggable) {
      props.put("mail.debug", "true");
    }

    if(_auth) {
      props.put("mail.smtp.auth", "true");
    }

    props.put("mail.smtp.port", _port);
    props.put("mail.smtp.socketFactory.port", _sport);
    props.put("mail.smtp.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtp.socketFactory.fallback", "false");

    return props;
  }

  // the getters and setters
  public String getBody() {
    return _body;
  }

  public void setBody(String _body) {
            this._body = _body;
          }

public void setTo(String[] _to) {
this._to=_to;
}

public void setSubject(String _subject) {
this._subject=_subject;
}

public void setFrom(String _from) {
this._from=_from;
}







  // more of the getters and setters …..
}

in the manifest :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android";
    package="com.kirimmail"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />
   <uses-permission android:name="android.permission.INTERNET" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".KirimMailActivity"
            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>

</manifest>

there is error :
02-12 20:12:27.673: E/KirimMailActivity(378): Could not send email
02-12 20:12:27.673: E/KirimMailActivity(378):
javax.mail.internet.AddressException: Illegal address in string ``''
02-12 20:12:27.673: E/KirimMailActivity(378):   at
javax.mail.internet.InternetAddress.<init>(InternetAddress.java:108)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
com.kirimmail.mail.send(mail.java:90)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
com.kirimmail.KirimMailActivity$1.onClick(KirimMailActivity.java:31)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
android.view.View.performClick(View.java:2408)
02-12 20:12:27.673: E/KirimMailActivity(378):   at android.view.View
$PerformClick.run(View.java:8816)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
android.os.Handler.handleCallback(Handler.java:587)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
android.os.Handler.dispatchMessage(Handler.java:92)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
android.os.Looper.loop(Looper.java:123)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
android.app.ActivityThread.main(ActivityThread.java:4627)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
java.lang.reflect.Method.invokeNative(Native Method)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
java.lang.reflect.Method.invoke(Method.java:521)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
com.android.internal.os.ZygoteInit
$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-12 20:12:27.673: E/KirimMailActivity(378):   at
dalvik.system.NativeStart.main(Native Method)




please , can you help me?

Thanks

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to