Perl を使用して電子メールを送信する

Perl Wo Shi Yongshite Dian Zimeruwo Song Xinsuru



Perl には、Ubuntu オペレーティング システムから電子メールを送信するための多くのモジュールが存在します。 「Net::SMTP::SSL」モジュールもその 1 つです。この Perl モジュールを使用して電子メールを送信するには、正しいユーザー名とパスワードを持つ有効な SMTP サーバーが必要です。このチュートリアルでは、Ubuntu オペレーティング システムから Perl スクリプトを使用して電子メールを送信するために、Gmail アカウントの SMTP サーバーと有効なユーザー名とパスワードが使用されます。ただし、Gmail SMTP サーバーを使用して電子メールを送信するには、Gmail アカウントにいくつかの設定が必要です。 Gmail SMTP サーバーを使用した電子メールの送信を有効にするには、Gmail アカウントの「安全性の低いアプリ」オプションが必要です。しかし、このGmailアカウントのオプションは2022年から削除されます。メールを送信するにはGmailアカウントの「アプリパスワード」を設定する必要があります。このチュートリアルの例を実践する前に、電子メールの送信に使用される Gmail アカウントにこのパスワードを設定する必要があります。

電子メール送信のさまざまな例

チュートリアルのこの部分では、Gmail SMTP サーバーと Gmail アカウントを使用して電子メールを送信する方法が示されています。

例 1: 単純なテキストメールの送信

Gmail SMTP サーバーを使用して単純なテキスト電子メールを送信する次のスクリプトを含む Perl ファイルを作成します。有効な電子メール アドレスとアプリ パスワードに設定されているパスワードを $username 変数と $password 変数に設定する必要があります。ダミーのユーザー名とパスワードがスクリプト内で割り当てられます。アプリのパスワードが正しく設定されていない場合、メールは送信されません。次に、有効な受信者と送信者の電子メール アドレスを $to 変数と $from 変数に設定して、電子メールが正しく送信されたかどうかを確認します。スクリプトの他の部分は変更されません。 SMTP サーバーが接続され、ユーザー情報が正常に認証された場合、単純なテキスト メッセージが受信者の電子メール アドレスに送信されます。







#!/usr/bin/perl

#必要なモジュールをインポートする
厳密に使用する ;
Net::SMTP::SSL を使用する ;

#Gmail サーバーを使用して電子メールを送信するサブルーチンを宣言します
サブ送信メール
{

#認証用のユーザー名とパスワード
私の$ユーザー名 = 「ユーザー名@gmail.com」 ;
私の$パスワード = 「アプリパスワード」 ;

#メール送信用の変数を初期化する
私の$to = 「receiver@gmail.com」 ;
私の$from = 「メヘル・ニガル ;
私の $subject = 「テストメールです」 ;
私の$メッセージ = 「こんにちは。Perl を使用して電子メールを送信しています。」 ;

#smtp 変数を宣言する
私の$smtpServer ;

#GmailのSMTPサーバーに接続する
もし ( ない $smtpサーバー = ネット::SMTP::SSL- > 新しい ( 「smtp.gmail.com」 ポート => 465 デバッグ => 1 ) )
{
「SMTPサーバーに接続できません。 \n ;
}

#ユーザー名とパスワードが有効であることを確認してください
$smtpServer- > 認証 ( $ユーザー名 $パスワード ) ||の '認証エラー。 \n ;

$smtpServer- > 郵便 ( $から。 \n ) ;
$smtpServer- > ( $to。 \n ) ;
$smtpServer- > データ ( ) ;
$smtpServer- > データ送信 ( 'から: ' 。 $から。 \n ) ;
$smtpServer- > データ送信 ( 'に: ' 。 $to 。 \n ) ;
$smtpServer- > データ送信 ( '主題: ' 。 $subject 。 \n ) ;
$smtpServer- > データ送信 ( \n ) ;

}

#サブルーチンを呼び出す

&メールを送る ( ) ;

出力:



電子メールが正常に送信された場合、スクリプトの実行後、出力の先頭に次の同様の情報が表示されます。







受信者の電子メール アドレスを開くと、受信箱に次の電子メールが届きます。

例 2: HTML 形式の電子メールの送信

Gmail SMTP サーバーを使用して HTML 形式の電子メールを送信する次のスクリプトを含む Perl ファイルを作成します。前の例と同様に、有効な電子メール アドレスとパスワードを設定する必要があります。次に、有効な受信者と送信者の電子メール アドレスを設定します。 HTML コードはスクリプト内の電子メール メッセージとして追加されます。 HTML形式のメールを送信するため、メールのコンテンツタイプをtext/htmlに設定します。スクリプトの他の部分は前の例と同じです。 SMTPサーバーに接続し、ユーザー情報の認証に成功すると、受信者のメールアドレスにHTML形式のメールが送信されます。

#!/usr/bin/perl

#必要なモジュールをインポートする
厳密に使用する ;
Net::SMTP::SSL を使用する ;

#Gmail サーバーを使用して電子メールを送信するサブルーチンを宣言します
サブ送信メール
{
#認証用のユーザー名とパスワード
私の$ユーザー名 = 「ユーザー名@gmail.com」 ;
私の$パスワード = 「アプリパスワード」 ;

#メール送信用の変数を初期化する
私の$to = 「receiver@gmail.com」 ;
私の$from = 「メヘル・ニガル ;
私の $subject = 「登録が完了しました」 ;
私の$メッセージ = '

私たちのサイトへようこそ

'
;

#smtp 変数を宣言する
私の$smtpServer ;

#Gmail smtp サーバーに接続する
もし ( ない $smtpサーバー = ネット::SMTP::SSL- > 新しい ( 「smtp.gmail.com」 ポート => 465 デバッグ => 1 ) )
{
「SMTPサーバーに接続できません。 \n ;
}

#ユーザー名とパスワードが有効であることを確認してください
$smtpServer- > 認証 ( $ユーザー名 $パスワード ) ||の '認証エラー。 \n ;

$smtpServer- > 郵便 ( $から。 \n ) ;
$smtpServer- > ( $to。 \n ) ;
$smtpServer- > データ ( ) ;
$smtpServer- > データ送信 ( 'から: ' 。 $から。 \n ) ;
$smtpServer- > データ送信 ( 'に: ' 。 $to 。 \n ) ;
$smtpServer- > データ送信 ( '主題: ' 。 $subject 。 \n ) ;

#HTML 形式の電子メールを送信するには、電子メールのコンテンツ タイプを HTML に設定します。
$smtpServer- > データ送信 ( 'Content-Type: text/html; charset=utf-8 \n \n ) ;
$smtpServer- > データ送信 ( $メッセージ。 \n ) ;
$smtpServer- > データの終わり ( ) ;
$smtpServer- > やめる ;

}

#サブルーチンを呼び出す

&メールを送る ( ) ;

出力:



電子メールが正常に送信された場合、スクリプトの実行後、出力の先頭に次の同様の情報が表示されます。







受信者の電子メール アドレスを開くと、受信箱に次の電子メールが届きます。





結論

Gmail アカウントの「安全性の低いアプリ」を無効にすると、Gmail SMTP サーバー経由で Perl を使用して電子メールを送信する方法が以前ほど簡単ではなくなります。ただし、アプリのパスワードを設定することでメールを送信できるようになりました。