「指定された文字列が電子メールアドレスに必要な形式ではありません」というエラーの原因は何ですか?
エラーの原因となるソースコード行:
msg.To.Add(new MailAddress("txtEmail.Text"));
msg.To.Add(new MailAddress("txtEmail.Text"));
問題です。 txtEmail.Textは電子メールアドレスではありません。それが電子メールのリストであるテキストファイルである場合、それを開いて読んで、それらを1つずつ渡す必要があります。
テキストボックスを参照している場合は、引用符を外してください。このような:
msg.To.Add(new MailAddress(txtEmail.Text));
私にとって、問題はセミコロン(;)を使用して複数のメールを区切ることでした。カンマ(、)に変更すると、機能します。これが誰かを助けることを願っています。
上記のコードの問題は、次の理由で発生した可能性があります
msg.To.Add(new MailAddress("txtEmail.Text"));
ここで "txtEmail.Text"は文字列として表示されますが、メールの送信先のメールアドレスではないことは明らかです。したがって、コードは次のように置き換える必要があります
msg.To.Add(new MailAddress(txtEmail.Text));
また、不適切な文字列を使用すると、「指定された文字列が電子メールアドレスに必要な形式ではありません」などのエラーが発生する場合があります。私もそれに直面したように。
基本的に私はASP.Netを使用してメール送信タスクで作業していました。私にとっての主な問題は、複数のユーザーにメールを送信することでした。まず、データベースからメールアドレスを取得し、複数のメールアドレスを分離するためにused ";"を使用しました。電子メールを複数のユーザーに送信する間、定期的にセミコロンを使用するため、つまり ";"です。
すべて問題ないように見えましたが、コンパイル後、「指定された文字列は電子メールアドレスに必要な形式ではありません」というエラーが表示されました。
少し分析したところ、「;」を使用する代わりに、「、」を使用して、メールを送信するときに複数のメールアドレスを区切る必要があることがわかりました。これは、電子メールを区切るためのフォーマットされた文字列です。
詳細については、次を参照してください: http://kopila.com.np
ありがとうございました!
うーん、見てみましょう。「txtEmail.Text」が有効なメールアドレスではない可能性はありますか?ここで推測しているだけですが、コントロールの実際の値を取得するために、その周りから引用符を削除することをお勧めします...
送信者と受信者の両方のアドレスは、有効な電子メールアドレス形式である必要があります。例えば。 [email protected]
次の形式である必要があります。
Dim myMail As New Net.Mail.MailMessage(New MailAddress(strFrom), New MailAddress(strTo))
問題は私たちにとって何だったと思いますか?
トレーリングスペース。何らかの理由で、複数行のテキストボックスを使用すると、文字列の前にスペースが追加されます。
文字列にTrimを使用すると、正常に機能しました。
受信者と送信者がすでに含まれているメッセージを作成しているときに問題が発生しましたが、次のエラーが返されました。
The specified string is not in the form required for an e-mail address
問題のあるコードは次のとおりです。
MailMessage objMsg = new MailMessage(regEmail.Text.ToString(), "[email protected]");
このコードを次のコードに置き換えることで問題を修正しました:
MailMessage objMsg = new MailMessage();
objMsg.From = new MailAddress(regEmail.Text.ToString());
objMsg.To.Add(new MailAddress("[email protected]"));
また、ユーザーコントロールで正規表現バリデーターを使用して、アドレスが有効であることを確認することも役立ちます。aspには次のコードを使用できます。
<asp:RegularExpressionValidator ID="regex1" ControlToValidate="regEmail" ErrorMessage="Please enter a valid email address" ValidationExpression="^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$" ValidationGroup="regGroup" runat="server" Display="None" SetFocusOnError="True"></asp:RegularExpressionValidator>
または、C#で電子メールを検証したい場合は、S FadhelALiが述べているようにこれを使用できます。
public static bool IsValidEmail(String Email)
{
if( Email != null && Email != "" )
return Regex.IsMatch(Email, @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" );
else
return false;
}