【会員アンケートご協力のお願い】抽選で計5名様に役立つ書籍をプレゼント!

Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
差出人指定して送信すると、変なものがtoに追加される
投稿日時: 24/11/26 10:31:41
投稿者: えびえび

初めて質問します。
  
複数アカウントを持っているので、差出人指定をしているのですが、受信するとおかしなものも追加されてしまいます。
  
送信する際、toには atesaki@atesaki しか表示されていませんが、
  
受信したら
atesaki@atesaki と、
so-****-jp?B?GyRkol***soQiAbJEIkXiRKJF8bKEI=?="@サーバー名
  
がtoに見えます。
もちろん全員返信すると、
sasidashi@sashidasi のほかに
so-****-jp?B?GyRkol***soQiAbJEIkXiRKJF8bKEI=?="@サーバー名
も、toに入ります。
  
これはなぜこのようになっているのでしょうか?
  
  
コードは下記です。
  
Sub 送信()
  
Dim oApp As New Outlook.Application
Dim oItem As Outlook.MailItem
Dim 本文 As String, 件名 As String
  
件名 = "件名です。"
本文 = "本文です。"
  
Set oItem = oApp.CreateItem(olMailItem)
  
oItem.SendUsingAccount = Session.Accounts("sasidashi@sashidasi")
oItem.To = "atesaki@atesaki"
oItem.Subject = 件名
oItem.HTMLBody = "" & 本文 & ""
oItem.Display '送信せずに画面を表示する
  
Set oItem = Nothing
  
End Sub

投稿日時: 24/11/26 10:41:09
投稿者: えびえび

ちなみにこのサーバー名は、sashidashi@sashidashi のものです。

回答
投稿日時: 24/11/26 13:56:52
投稿者: simple

・複数アカウント
・atesaki@atesaki
・sasidashi@sashidasi
この3者(4者かも)の関係を説明してください。あなたには自明でも説明がないと誤解を生みますので。
そうすればコメントがいただけるのではないでしょうか。
 
| 受信したら
| atesaki@atesaki と、
| so-****-jp?B?GyRkol***soQiAbJEIkXiRKJF8bKEI=?="@サーバー名
| がtoに見えます。
それを受信したということは、あなたはatesaki@atesakiですか?
so-****-jp?B?GyRkol***soQiAbJEIkXiRKJF8bKEI=?="@サーバー名
は、もう一つのアカウントの一時的な名称では?(当てずっぽうです)
なぜそうなるかはサーバーに尋ねないとわかりませんが。
少なくともExcelVBAの話じゃないと思われます。

回答
投稿日時: 24/11/26 16:36:29
投稿者: Suzu

このコードはご自身で考えたのでしょうか?
それとも、Outlookの VBA のサイトを参考にされているのでしょうか?
 
少なくとも、Excel VBA から
 Outlookを操作する VBA のサイト情報を参考にしたコードではないですよね?
 
【Outlook 研究所】
Excel マクロからメールを送信する際に送信アカウントを指定する方法
https://outlooklab.wordpress.com/2019/06/22/excel-%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%8B%E3%82%89%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AB%E9%80%81%E4%BF%A1%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3/
 
【Excelの神髄】
VBAでのOutlook自動操作
https://excel-ubara.com/excelvba4/EXCEL245.html
 
少なくとも
 
oItem.SendUsingAccount = Session.Accounts("sasidashi@sashidasi")
 
 
            ↑
           ----
           Outlookアプリケーションの 明示
                    ----
                     ↑
                     省略されている Item が必要
 
また
 
Outlook 研究所
でもそうですし
 
MailItem.SendUsingAccount プロパティ (Outlook)
https://learn.microsoft.com/ja-jp/office/vba/api/outlook.mailitem.sendusingaccount
 
でも
 
MailItem.SendUsingAccount には、オブジェクトを設定する必要があります。
 
Let ではなく、Set が必要
 
コード的に気づいた点は以上でしょうか。
 
 

引用:
so-****-jp?B?GyRkol***soQiAbJEIkXiRKJF8bKEI=?="@サーバー名

なんとなく、Base64 の変換後の文字の様にも見えます。
 
メールアドレスに、日本語が含まれていませんか?
文字コードを指定してみましょう。
 
HTML ではなく、テキストだとどうでしょうか。
 oItem.BodyFormat
 oItem.Body
でしょうか。

回答
投稿日時: 24/11/26 16:44:07
投稿者: Suzu

Suzu さんの引用:
メールアドレスに、日本語が含まれていませんか?
文字コードを指定してみましょう。

 
正しくは
 
oItem.To = "モーグ<xxxx@moug.net>"
の様な、半角カナを含む様な文字を To に渡しているなら
 
oItem.To = "xxxx@moug.net"
の様に、
 方法.1 それらを除く
 
 
 方法.2 全角カナに変える
 方法.3 文字コード指定
 
です。

投稿日時: 24/11/27 10:16:05
投稿者: えびえび

simple さんの引用:
・複数アカウント
・atesaki@atesaki
・sasidashi@sashidasi
この3者(4者かも)の関係を説明してください。あなたには自明でも説明がないと誤解を生みますので。
そうすればコメントがいただけるのではないでしょうか。
 
| 受信したら
| atesaki@atesaki と、
| so-****-jp?B?GyRkol***soQiAbJEIkXiRKJF8bKEI=?="@サーバー名
| がtoに見えます。
それを受信したということは、あなたはatesaki@atesakiですか?
so-****-jp?B?GyRkol***soQiAbJEIkXiRKJF8bKEI=?="@サーバー名
は、もう一つのアカウントの一時的な名称では?(当てずっぽうです)
なぜそうなるかはサーバーに尋ねないとわかりませんが。
少なくともExcelVBAの話じゃないと思われます。

 
 
大変申し訳ございません。
まずは
1.main@main=メインアカウント
2.atesaki@atesaki
3.sasidashi@sashidasi
関係はというと、1.メインアカウントのoutlookに、2.3.を追加している状態です。
 
今このコードでテストをしていて、自分のアカウントで色々送信テストをしておりました。
 
2.3.のアドレスをSendUsingAccountにセットすると、2.3.のサーバ名?がくっついてきているようです。
(2.3.は別のサーバーです)
 
ちなみに1.メインアカウントから送信すると、サーバー名が付いてくるようなことはありませんでした。

投稿日時: 24/11/27 10:20:08
投稿者: えびえび

Suzu さんの引用:
このコードはご自身で考えたのでしょうか?
それとも、Outlookの VBA のサイトを参考にされているのでしょうか?
 
少なくとも、Excel VBA から
 Outlookを操作する VBA のサイト情報を参考にしたコードではないですよね?
 
【Outlook 研究所】
Excel マクロからメールを送信する際に送信アカウントを指定する方法
https://outlooklab.wordpress.com/2019/06/22/excel-%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%8B%E3%82%89%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AB%E9%80%81%E4%BF%A1%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3/
 
【Excelの神髄】
VBAでのOutlook自動操作
https://excel-ubara.com/excelvba4/EXCEL245.html
 
少なくとも
 
oItem.SendUsingAccount = Session.Accounts("sasidashi@sashidasi")
 
 
            ↑
           ----
           Outlookアプリケーションの 明示
                    ----
                     ↑
                     省略されている Item が必要
 
また
 
Outlook 研究所
でもそうですし
 
MailItem.SendUsingAccount プロパティ (Outlook)
https://learn.microsoft.com/ja-jp/office/vba/api/outlook.mailitem.sendusingaccount
 
でも
 
MailItem.SendUsingAccount には、オブジェクトを設定する必要があります。
 
Let ではなく、Set が必要
 
コード的に気づいた点は以上でしょうか。
 
 
引用:
so-****-jp?B?GyRkol***soQiAbJEIkXiRKJF8bKEI=?="@サーバー名

なんとなく、Base64 の変換後の文字の様にも見えます。
 
メールアドレスに、日本語が含まれていませんか?
文字コードを指定してみましょう。
 
HTML ではなく、テキストだとどうでしょうか。
 oItem.BodyFormat
 oItem.Body
でしょうか。

 
 
 
 
すみません、自分で考えておらず、ネットにあったコードをそのまま使用しております。
初心者のため、自分で1から書くことはできず、修正することしかできません💦
 
ちなみに
【Outlook 研究所】
Excel マクロからメールを送信する際に送信アカウントを指定する方法
https://outlooklab.wordpress.com/2019/06/22/excel-%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%8B%E3%82%89%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AB%E9%80%81%E4%BF%A1%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3/
 
も試したのですが、同じような状態でした。
こちらではsetを使用していましたが、ダメでした。

投稿日時: 24/11/27 10:21:59
投稿者: えびえび

Suzu さんの引用:
Suzu さんの引用:
メールアドレスに、日本語が含まれていませんか?
文字コードを指定してみましょう。

 
正しくは
 
oItem.To = "モーグ<xxxx@moug.net>"
の様な、半角カナを含む様な文字を To に渡しているなら
 
oItem.To = "xxxx@moug.net"
の様に、
 方法.1 それらを除く
 
 
 方法.2 全角カナに変える
 方法.3 文字コード指定
 
です。

 
 
ありがとうございます。
toには"xxxx@moug.net"のような形で、アドレスのみ渡しております。
 
方法.3 文字コード指定
とは、どのようにすればよろしいでしょうか?

回答
投稿日時: 24/11/27 16:05:19
投稿者: Suzu

文字コード については
 
Exchange Server のメッセージ エンコード オプション
https://learn.microsoft.com/ja-jp/exchange/mail-flow/content-conversion/message-encoding?view=exchserver-2019
 
にあります。
 
しかし、

引用:
toには"xxxx@moug.net"のような形で、アドレスのみ渡しております。

 
なのであれば、文字コード が要因である可能性は低いかと。
 
 
引用:
2.atesaki@atesaki
3.sasidashi@sashidasi
 
2.3.のアドレスをSendUsingAccountにセットすると、2.3.のサーバ名?がくっついてきているようです。
(2.3.は別のサーバーです)
  
ちなみに1.メインアカウントから送信すると、サーバー名が付いてくるようなことはありませんでした。

 
2/3のアカウントでは
メールを送信した際に、送信履歴として、 2.3.のサーバー名? のアドレスへもメールを送信し
履歴として残す様な設定の サービスが含まれているのでは?
(既に simple さんが指摘されている内容です)
 
VBAではなく、手動で、2.3. アカウントからメールを送信してみても、
2.3.のサーバー名? のアドレスへもメールを送信する様になりませんか?
 
 
その場合、上記の色んな事があったりします。
初心者で、『ネット上に転がっているコードを適当にいじってやれば動くでしょ。』の感覚で
マクロを組み 実行したとき、
Excelであれば、ローカルだったり、アカウントに紐づいたファイルへの影響で済みます
 (開発者としては動作が確認しやすい)
 
対して、Meil を送るという事は、SMTPサーバーだったり、
他の人も共用しているサーバーを動かす事です。
 
そこで開発者が気づきにくい 問題が発生し、そのまま運用したとき
問題が表面化したときには、他の多くに影響を与えている可能性もあります。
 (今回のも、『2.3.のサーバー名? のアドレスへもメールを送信』という
  他のアカウントに対し影響を与えています)
 
初心者だから と 開き直るのではなく
きちんと、ネットワーク管理者 にも 相談し コーディングを進める様にした方が良いです。

投稿日時: 24/11/28 14:13:23
投稿者: えびえび

Suzu さんの引用:

VBAではなく、手動で、2.3. アカウントからメールを送信してみても、
2.3.のサーバー名? のアドレスへもメールを送信する様になりませんか?

 
 
これはなかったです。
VBAで動かしたときのみです。
 
 
 
Suzu さんの引用:

対して、Meil を送るという事は、SMTPサーバーだったり、
他の人も共用しているサーバーを動かす事です。
 
そこで開発者が気づきにくい 問題が発生し、そのまま運用したとき
問題が表面化したときには、他の多くに影響を与えている可能性もあります。
 (今回のも、『2.3.のサーバー名? のアドレスへもメールを送信』という
  他のアカウントに対し影響を与えています)
 
初心者だから と 開き直るのではなく
きちんと、ネットワーク管理者 にも 相談し コーディングを進める様にした方が良いです。

 
 
 
そうなんですね、ちょっと管理者および詳しいものに聞いてみます。
ありがとうございました。

トピックに返信