【发布时间】:2014-07-27 06:57:51
【问题描述】:
我开始学习 android 编程,我完全是 php 新手。
在发布这个问题之前,我已经尝试了所有与之相关的答案,但没有一个对我有用,所以我决定发布一个新问题。
我有一个应用程序,用户在其中输入一个表单,然后通过电子邮件将其内容发送给我。
我成功收到了邮件,但只有php中定义的字符串。我还希望用户的输入也能发送到我的电子邮件中。
请检查下面的php代码和java代码并提出合适的建议。
收到的电子邮件:
“名字:姓氏:您的电子邮件:您的电话:”
无需用户以 android 形式输入。 :(
email2.php
<?php
$ed1=$_POST['fname'];
$ed2=$_POST['lname'];
$ed3=$_POST['email'];
$ed4=$_POST['phone'];
$to="ab5593@gmail.com";
$subject="android_email";
$from="$ed3";
$body="First Name:" .$ed1."\n Last Name:" .$ed2. "\n Your Email:".$ed3."\n Your Phone:" .$ed4."\n";
$header="From :".$from."\n";
if(mail($to,$subject,$body,$header))
{
echo "Thank you";
}
else
{
echo"Try Again";
}
?>
FormActivity.java
package com.example.getpost;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.ByteArrayBuffer;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class FormActivity extends Activity {
TextView txtvw;
String text;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_form);
txtvw = (TextView)findViewById(R.id.textView1);
text = "";
postData();
}
public void postData(){
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://www.amit.comeze.com/email2.php");
EditText ed1 = (EditText)findViewById(R.id.editText1);
EditText ed2 = (EditText)findViewById(R.id.editText2);
EditText ed3 = (EditText)findViewById(R.id.editText3);
EditText ed4 = (EditText)findViewById(R.id.editText4);
try {
// Add your data
List<BasicNameValuePair> nameValuePairs = new ArrayList<BasicNameValuePair>();
nameValuePairs.add(new BasicNameValuePair("fname", ed1.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("lname", ed2.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("email", ed3.getText().toString()));
nameValuePairs.add(new BasicNameValuePair("phone", ed4.getText().toString()));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
InputStream is = response.getEntity().getContent();
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(20);
int current = 0;
while((current = bis.read()) != -1){
baf.append((byte)current);
}
/* Convert the Bytes read to a String. */
text = new String(baf.toByteArray());
txtvw.setText(text);
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
}
}
此外,当表单在 android 中打开时,即使表单为空,启动时也会显示“ThankYou”消息,我猜邮件也没有发送。
我需要在用户按下表单上的提交按钮后出现感谢消息,并且在用户按下提交按钮后出现所有验证错误(未在给出的 php 代码中编码)。
期待您的宝贵建议,这些建议将对我有很大帮助,我们将不胜感激。
问候。
【问题讨论】: