C#でメールを送信するWebサービスがありました
[WebMethod]
public string sendEmail()
{
MailMessage mail = new MailMessage();
SmtpClient smtpsvr = new SmtpClient("smtp.gmail.com");
// mail settings
// smtpsvr settings
smtpsvr.SendCompleted += new SendCompletedEventHandler(sentCompleteCallBack);
try
{
smtpsvr.SendAsync(mail, "Email 1");
return "sent"; //this return only indicate email has been sent out
}
catch (Exception)
{
return "failed";
}
}
private void sentCompleteCallBack(object sender, AsyncCompletedEventArgs e)
{
if (e.Error != null) //error
{
sendResult = "email failed " + (string)e.UserState;
}
else
{ //this result, indicate the process of sending email has been completed
sendResult = "email sent " + (string)e.UserState;
}
// ??? haw to pass sendResult value to client page
}
プロパティ文字列、クラス文字列を使用してsendResult値を取得してみました。しかし、クライアントページ(aspx)の最後では、空/nullのみを取得しました。文字列sendEmail()値しか取得できません。
sendResult値をクライアントに返す方法は?助けてくれてありがとう!
/ * ** * ** * *** /編集
このようにコードを変更する必要があるかもしれませんか?(まだsendAsync()を使用しています
[WebMethod]
public string sendEmail()
{
MailMessage mail = new MailMessage();
SmtpClient smtpsvr = new SmtpClient("smtp.gmail.com");
//mail settings
//smtpsvr settings
smtpsvr.SendCompleted += new SendCompletedEventHandler(sentCompleteCallBack);
try
{
smtpsvr.SendAsync(mail, "email 1");
return "sent";
}
catch (Exception)
{
return "failed";
}
}
private void sentCompleteCallBack(object sender, AsyncCompletedEventArgs e)
{
if (e.Error != null) //error
{
//write to DB_email_status = "failed"
}
else
{
//write to DB_email_status = "success"
}
}
クライアント側のページ(aspx):(1)Webサービスを呼び出して電子メールを送信します。(2)sendEmail()メソッドから電子メール送信文字列値を取得します。(3)button_onclick:DB_email_statusからデータを表示/取得します。(???)このケースは達成可能ですか?(!!!) 本当にありがとう。