web-dev-qa-db-ja.com

「指定された文字列が電子メールアドレスに必要な形式ではありません」の原因は何ですか?

「指定された文字列が電子メールアドレスに必要な形式ではありません」というエラーの原因は何ですか?

エラーの原因となるソースコード行:

msg.To.Add(new MailAddress("txtEmail.Text"));
8
parveen
msg.To.Add(new MailAddress("txtEmail.Text"));

問題です。 txtEmail.Textは電子メールアドレスではありません。それが電子メールのリストであるテキストファイルである場合、それを開いて読んで、それらを1つずつ渡す必要があります。

テキストボックスを参照している場合は、引用符を外してください。このような:

msg.To.Add(new MailAddress(txtEmail.Text));
15
ajma

私にとって、問題はセミコロン(;)を使用して複数のメールを区切ることでした。カンマ(、)に変更すると、機能します。これが誰かを助けることを願っています。

12
chodae

上記のコードの問題は、次の理由で発生した可能性があります

msg.To.Add(new MailAddress("txtEmail.Text"));

ここで "txtEmail.Text"は文字列として表示されますが、メールの送信先のメールアドレスではないことは明らかです。したがって、コードは次のように置き換える必要があります

msg.To.Add(new MailAddress(txtEmail.Text));

また、不適切な文字列を使用すると、「指定された文字列が電子メールアドレスに必要な形式ではありません」などのエラーが発生する場合があります。私もそれに直面したように。

基本的に私はASP.Netを使用してメール送信タスクで作業していました。私にとっての主な問題は、複数のユーザーにメールを送信することでした。まず、データベースからメールアドレスを取得し、複数のメールアドレスを分離するためにused ";"を使用しました。電子メールを複数のユーザーに送信する間、定期的にセミコロンを使用するため、つまり ";"です。

すべて問題ないように見えましたが、コンパイル後、「指定された文字列は電子メールアドレスに必要な形式ではありません」というエラーが表示されました。

少し分析したところ、「;」を使用する代わりに、「、」を使用して、メールを送信するときに複数のメールアドレスを区切る必要があることがわかりました。これは、電子メールを区切るためのフォーマットされた文字列です。

詳細については、次を参照してください: http://kopila.com.np

ありがとうございました!

4
user1780336

うーん、見てみましょう。「txtEmail.Text」が有効なメールアドレスではない可能性はありますか?ここで推測しているだけですが、コントロールの実際の値を取得するために、その周りから引用符を削除することをお勧めします...

1
Paddy

送信者と受信者の両方のアドレスは、有効な電子メールアドレス形式である必要があります。例えば。 [email protected]

1
WraithNath

次の形式である必要があります。

Dim myMail As New Net.Mail.MailMessage(New MailAddress(strFrom), New MailAddress(strTo))
0
Mukund

問題は私たちにとって何だったと思いますか?

トレーリングスペース。何らかの理由で、複数行のテキストボックスを使用すると、文字列の前にスペースが追加されます。

文字列にTrimを使用すると、正常に機能しました。

0
Deltatech

受信者と送信者がすでに含まれているメッセージを作成しているときに問題が発生しましたが、次のエラーが返されました。

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;
}
0
Luke Alderton