2012-04-10 1 views
5

Ich habe durch this Frage gegangen, es funktioniert gut mit seinem eigenen Fall mit SSLE-Mail in Android mit Java Mail API mit smtp aber ohne SSL

und ich habe auch versucht, this ein, die irgendwie zu meinem Bedürfnisse paßt aber In meinem Fall wird es nicht funktionieren.

Ich habe auch this Thema aber in der Lage immer noch nicht eine E-Mail zu senden, ohne SSL in meinem Code.

Jedesmal, wenn ich eine E-Mail senden Sie es sagt "Exception 554, E-Mail Refused"

, was ich wirklich brauchen, ist zu verwenden ::

Hostes: "smtpout.secureserver.net"

Port-Nr:

Danke,

Haps.

Antwort

14

ja mein lieber Freund, den ich u helfen kann ..

Erstens verwenden mail.jar, activation.jar, Additional.jar Datei hochladen in Ihrem Projekt

Verwenden Sie diese E-Mail-Klasse

package com.technosoft.AkashEmailAddress; 

import java.io.ByteArrayInputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import java.util.Date; 
import java.util.Properties; 
import javax.activation.CommandMap; 
import javax.activation.DataHandler; 
import javax.activation.DataSource; 
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; 

import android.util.Log; 


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); 
    DataHandler handler = new DataHandler(new ByteArrayDataSource(_body.getBytes(), "text/plain")); 
     MimeMessage msg = new MimeMessage(session); 

     msg.setFrom(new InternetAddress(_from)); 
     msg.setDataHandler(handler); 
     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); 
     Log.v("mas", "Email was send"); 
     return true; 
    } else { 
     Log.v("mas", "Email was not send"); 
     return false; 

    } 
    } 
    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"); 
     } 
    } 

    @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[] toArr) { 
    // TODO Auto-generated method stub 
    this._to=toArr; 
} 

public void setFrom(String string) { 
    // TODO Auto-generated method stub 
    this._from=string; 
} 

public void setSubject(String string) { 
    // TODO Auto-generated method stub 
    this._subject=string; 
} 

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

Mail-Klasse hat() -Methode in der Hauptklasse diesen Code

Main class extends Activity{ 
    Mail m=new Mail("[email protected]","XXXXXXX"); 
    @SuppressWarnings("static-access") 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.email); 
String[] toArr = {"[email protected]","[email protected]"}; 
     m.setTo(toArr); 
     m.setFrom("AKASH"); 
     m.setSubject("Your Subject"); 
     m.setBody("Your Message body"); 

     try { 
      boolean i= m.send(); 
      if(i==true){ 
       Toast.makeText(getApplicationContext(),"Email was sent successfully ",2000).show(); 

      } 
      else 
      { 
       Toast.makeText(getApplicationContext(),"Email was not sent successfully ",2000).show(); 

      } 

     } catch (Exception e2) { 
      // TODO Auto-generated catch block 
      e2.printStackTrace(); 
     } 

} 
} 

Verwenden senden Und genieße ! Diese

+1

Danke für den Code @Akash, aber Ihr Beispiel ist auch mit SSL und ich möchte ohne SSL gehen. Sorry.:P – Harpreet

+0

wenn u auf, dass jede Andeutung haben dann plz tun uns sagen. :) – Harpreet

+3

http://stackoverflow.com/questions/1949871/java-mail-sslhandshakeexception-when-sending-email-on-port-25-without-ssl –

3

ist, was ich für die Fehler erhalten, das bedeutet, E-Mails von Ihrer IP-Senden ist gesperrt. unten Antwort ist von diesem Link http://postmaster.bluetie.com/subcontent/smtpCodes.php

554 - BL0002: Mail Refused - IP-Adresse die schwarze Liste gesetzt XXX.XXX.XXX.XXX - Bitte beachten Sie http://www.spamcop.net/w3m?action=checkblock&ip=xxx.xxx.xxx.xxx Diese Fehlermeldung das Senden von IP-Adresse angibt, auf der SpamCop Schwarze Liste gefunden wurde. Eine Entfernungs-/Zurücksetzungsanforderung muss von der sendenden Partei ausgestellt werden. BlueTie kann die sendende IP-Adresse nicht von der Blacklist entfernen. Möglicherweise möchten Sie Ihren ISP für weitere Hilfe bei Fehlern dieser Art kontaktieren.

+0

Dank @Sandip. Ich glaube, ich verpasse etwas im Code. – Harpreet

+0

@Haps - Ich glaube nicht, dass Sie irgendetwas im Code verpassen, wenn Sie dem ersten Beispiel Link richtig folgen, nur zwei Tage zurück habe ich denselben Link verwendet, um E-Mails zu senden & es funktioniert perfekt ... Sie müssen Ihren Internetanbieter sehen oder Systemadministrator –

+0

ok @Sandip. Ich sollte das überprüfen. – Harpreet