java - 从 Android 调用邮件 PHP 文件不起作用
问题描述
我的 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);
conn.setReadTimeout(20000);
conn.setDoInput(true);
conn.setDoOutput(true);
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(); }
}
当我调用该函数时,Logcat 会打印出以下消息:
I/log-: PHP STRING URL: http://example.com/myapp/email-admin.php?name=Mark%20Doe&fromEmail=myemail@gmail.com&receiverEmail=admin@mydomain.com&messageBody=PRODUCT%20ID:%20Q3nQgZdlFG%20---%20PRODUCT:%20Nike%20Sport%20Shoes%20black%20%20---%20QUANTITY:%201%20---%20SIZE:%20L%20&storeName=Z%20Store%20Inc.&shippingAddress=John%20Doe,%20121%20Church%20Avenue,%20ASD123,%20London,%20UK
I/log-: EMAIL RESPONSE: OK
所以我认为一切都很好,因为 RESPONSE = OK。但事实并非如此,因为我不会在 admin@mydomain.com 收到任何电子邮件(还有另一个电子邮件地址,我发布了一个假的作为示例,Logcat 将我的真实电子邮件地址打印为receiverEmail
)。
这是我的mail.php
文件:
// POST Variables
$name = $_POST['name'];
$fromEmail = $_POST['fromEmail'];
$receiverEmail = $_POST['receiverEmail'];
$messageBody = $_POST['messageBody'];
$storeName = $_POST['storeName'];
$shippingAddress = $_POST['shippingAddress'];
$headers = 'From: ' .$fromEmail;
// SUBJECT
$subject = "New order from " .$name. " on '" .$storeName. "'";
// COMPOSE MESSAGE
$message =
"ORDER DETAILS:\n".
$messageBody.
"\n\nName: " .$name.
"\nUser Email: " .$fromEmail.
"\nShipping Address: " .$shippingAddress
;
/* Finally send email */
mail($receiverEmail,
$subject,
$message,
$headers
);
/* Result */
echo "Email Sent to: " .$receiverEmail. "\n Message: " .$message;
我的代码有问题吗?还有另一种方法可以从我自己的服务器调用mail.php文件吗?我也试过这个问题,但我无法DefaultHttpClient
在我的项目中导入该类。
解决方案
使用 $_GET 而不是 $_POST ,
将所有变量从
$name = $_POST['name'];
至
$name = $_GET['name'];
推荐阅读
- yocto - 如何在基于 Yocto 项目的 lk-bootloader 中集成修补程序
- android - 使用 OkHttp 有多安全
- python - 如何使用 PIL 和 Tkinter 绘制光滑的线条
- asp.net-mvc - jQuery数据表分页不适用于mvc视图
- javascript - 如何根据来自另一个 div 的类增加/减少宽度?
- python - 我想从另一个 python 文件中导入一个变量(Django)
- c++ - C1001:包含时编译器发生内部错误
- excel - 在 Excel 中,在图表标题中使用字符串连接公式时出现问题
- bash - 将多个文件单独合并为一个文件
- codeigniter - 强化扫描 - 可能的变量覆盖:全局范围