为了账号安全,请及时绑定邮箱和手机立即绑定

从 Android 调用邮件 PHP 文件不起作用

从 Android 调用邮件 PHP 文件不起作用

HUX布斯 2021-10-28 15:19:13
我的 Android 应用程序具有以下功能:void sendEmail(String PHPfileUurl, String receiverEmail, String fromEmail) {        ParseUser currentUser = ParseUser.getCurrentUser();        StringBuilder messageBuilder = new StringBuilder();        for (int i=0; i<productsOrdered.size(); i++){            messageBuilder.append(productsOrdered.get(i)).append("\n");        }        String mess = messageBuilder.toString();        String parameters = "name=" + currentUser.getString(Configurations.USER_FULLNAME) +                "&fromEmail=" + fromEmail +                "&receiverEmail=" + receiverEmail +                "&messageBody=" + mess +                "&storeName=" + Configurations.MERCHANT_NAME +                "&shippingAddress=" + currentUser.getString(Configurations.USER_SHIPPING_ADDRESS);        String strURL = PHPfileUurl + parameters;        strURL = strURL.replace(" ", "%20");        strURL = strURL.replace("\n", "%20");        Log.i(Configurations.TAG, "PHP STRING URL: " + strURL);        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();        StrictMode.setThreadPolicy(policy);        try {            URL url;            url = new URL(strURL);            HttpURLConnection conn = (HttpURLConnection) url.openConnection();            conn.setRequestMethod("POST");            conn.setConnectTimeout(20000);    }所以我认为一切都很好,因为 RESPONSE = OK。但事实并非如此,因为我不会在 admin@mydomain.com 收到任何电子邮件(还有另一个电子邮件地址,我已经发布了一个假的作为示例,Logcat 将我的真实电子邮件地址打印为receiverEmail)。我的代码有问题吗?还有另一种方法可以从我自己的服务器调用mail.php文件吗?我也试过这个问题,但我不能DefaultHttpClient在我的项目中导入这个类。
查看完整描述

2 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

使用 $_GET 而不是 $_POST ,

将所有变量从

$name = $_POST['name'];

$name = $_GET['name'];


查看完整回答
反对 回复 2021-10-28
?
绝地无双

TA贡献1946条经验 获得超4个赞

如果您将 $_POST 更改为 $_GET 会更容易,但如果消息中有 (&something=),则 $_GET 方法中的问题您将只会收到一半的消息,因为 &something= 将设置为另一个 $_GET , 如果消息太长,您也可能会遇到一些问题,


所以如果你想使用 $_POST 方法而不是 $_GET


您需要更改您的java代码,确保导入Map,然后将其更改为此


void sendEmail(String PHPfileUurl, String receiverEmail, String fromEmail) {

    ParseUser currentUser = ParseUser.getCurrentUser();


    StringBuilder messageBuilder = new StringBuilder();

    for (int i=0; i<productsOrdered.size(); i++){

        messageBuilder.append(productsOrdered.get(i)).append("\n");

    }

    String mess = messageBuilder.toString();



    Map<String,Object> params = new LinkedHashMap<>();

params.put("name", currentUser.getString(Configurations.USER_FULLNAME));

params.put("fromEmail", fromEmail);

params.put("receiverEmail", receiverEmail);

params.put("messageBody", mess);

 params.put("storeName", Configurations.MERCHANT_NAME);

  params.put("shippingAddress", currentUser.getString(Configurations.USER_SHIPPING_ADDRESS);


StringBuilder postData = new StringBuilder();

for (Map.Entry<String,Object> param : params.entrySet()) {

    if (postData.length() != 0) postData.append('&');

    postData.append(URLEncoder.encode(param.getKey(), "UTF-8"));

    postData.append('=');

    postData.append(URLEncoder.encode(String.valueOf(param.getValue()), "UTF-8"));

}

byte[] postDataBytes = postData.toString().getBytes("UTF-8");



    String strURL = PHPfileUurl;


    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();

    StrictMode.setThreadPolicy(policy);

    try {

        URL url;

        url = new URL(strURL);

        HttpURLConnection conn = (HttpURLConnection) url.openConnection();

        conn.setRequestMethod("POST");

        conn.setConnectTimeout(20000);

        conn.setReadTimeout(20000);

        conn.setDoInput(true);

        conn.setDoOutput(true);

        conn.getOutputStream().write(postDataBytes);



        if( conn.getResponseCode() == HttpURLConnection.HTTP_OK ){

            InputStream is = conn.getInputStream();

            Log.i(Configurations.TAG, "EMAIL RESPONSE: " + conn.getResponseMessage());

        } else {

            InputStream err = conn.getErrorStream();

            Log.i(Configurations.TAG, "ERROR ON EMAIL: " + err);

        }

    } catch (IOException e) {e.printStackTrace(); }

}



查看完整回答
反对 回复 2021-10-28
  • 2 回答
  • 0 关注
  • 199 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信