如何在Outlook/Exchange Online中以重发/转发邮箱为发件人处理邮件
针对Exchange Online的两种转发需求解决方案
需求1:伪装发件人转发(显示发件人为firstreceiver@domain.com)
方案1:Exchange Online邮件流规则(传输规则)
- 登录Exchange管理中心,进入邮件流 > 规则,新建规则
- 条件:勾选“收件人是”并选择
firstreceiver@domain.com,同时勾选“发件人是”并选择sender@domain.com - 操作:
- 选择“将邮件重定向到”并添加
finalreceiver@domain.com - 添加操作“重写发件人地址”,设置为
firstreceiver@domain.com
- 选择“将邮件重定向到”并添加
- 保存规则后,符合条件的邮件会自动重定向,且收件方看到的发件人为指定邮箱
方案2:PowerShell脚本(实时/定时触发)
- 安装并连接Exchange Online PowerShell模块:
Install-Module -Name ExchangeOnlineManagement Connect-ExchangeOnline -UserPrincipalName your-admin-account@domain.com - 编写脚本监控并转发邮件(示例):
# 获取指定邮箱中来自sender的未读邮件 $targetEmails = Search-Mailbox -Identity firstreceiver@domain.com -SearchQuery "from:sender@domain.com isread:false" -TargetMailbox your-admin-account@domain.com -TargetFolder "ForwardTemp" -LogLevel Full # 遍历邮件并转发 foreach ($email in $targetEmails) { Send-MailMessage ` -From "firstreceiver@domain.com" ` -To "finalreceiver@domain.com" ` -Subject $email.Subject ` -Body $email.Body ` -SmtpServer "smtp.office365.com" ` -Port 587 ` -UseSsl ` -Credential (Get-Credential) # 标记邮件为已读 Set-MailboxMessage -Identity firstreceiver@domain.com -MessageId $email.MessageId -IsRead $true }
- 注意:执行脚本的账号需要拥有
firstreceiver@domain.com的完全访问权限和发送为权限
需求2:无FW:和转发头部的原样转发
方案1:邮件流规则自定义转发
- 新建邮件流规则,条件根据需求设置(比如“收件人是firstreceiver@domain.com”)
- 操作:
- 选择“生成新邮件”,设置收件人为
finalreceiver@domain.com,发件人为firstreceiver@domain.com - 设置主题为
%Subject%(自动获取原邮件主题),若要去掉已有的FW:,添加操作“替换主题中的文本”,将“FW: ”替换为空字符串 - 设置正文为原邮件的正文(选择“包含原始邮件的文本”并勾选“不包含邮件头信息”),同时添加附件
- 选择“生成新邮件”,设置收件人为
- 此规则会生成全新邮件,无转发标识和头部
方案2:PowerShell脚本原样转发
使用脚本直接提取原邮件的所有内容,重新发送:
Connect-ExchangeOnline # 获取近24小时内收件箱的已投递邮件 $inboxEmails = Get-MessageTrace -RecipientAddress firstreceiver@domain.com -StartDate (Get-Date).AddHours(-24) | Where-Object { $_.Status -eq "Delivered" } foreach ($msg in $inboxEmails) { $mailItem = Get-MailMessage -Identity $msg.MessageId -Mailbox firstreceiver@domain.com # 处理主题,去掉前缀FW: $newSubject = $mailItem.Subject -replace "^FW: ", "" # 重新发送邮件 Send-MailMessage ` -From "firstreceiver@domain.com" ` -To "finalreceiver@domain.com" ` -Subject $newSubject ` -Body $mailItem.BodyHtml ` -BodyAsHtml ` -Attachments ($mailItem.Attachments | ForEach-Object { $_.FileName }) ` -SmtpServer "smtp.office365.com" ` -Port 587 ` -UseSsl ` -Credential (Get-Credential) }
内容的提问来源于stack exchange,提问作者StigK
相关产品推荐
相关产品推荐

