我Microsoft.Office.Interop.Outlook在C#中使用来访问邮箱并查找具有特定文件附件的邮件.我需要与附件进行交互.
目前,我正在将文件保存到新位置并从那里访问它.这种复制过程让我感到沮丧.理想情况下,我希望从存储在内存中的任何位置访问该文件,但该Outlook.Attachment.PathName字段返回null.
邮件存储在Exchange服务器上.
可以直接访问它们还是我需要继续保存文件?
我通过MFMailComposeViewController发送csv附件时遇到问题.有时它们会很好地通过,但对于其他用户来说,它们不是作为附件而来的,而是作为电子邮件中的文本内联(而不是行返回).这很奇怪.谁知道我做错了什么?这是我的代码片段:
MFMailComposeViewController *mailComposeViewController = [[MFMailComposeViewController alloc] init];
mailComposeViewController.mailComposeDelegate = self;
NSString *csv = @"foo,bar,blah,hello";
NSData *csvData = [csv dataUsingEncoding:NSUTF8StringEncoding];
[mailComposeViewController addAttachmentData:csvData mimeType:@"text/csv" fileName:@"testing.csv"];
[mailComposeViewController setSubject:@"testing sending csv attachment"];
[mailComposeViewController setMessageBody:@"csv file should be attached" isHTML:NO];
[self presentModalViewController:mailComposeViewController animated:YES];
Run Code Online (Sandbox Code Playgroud) 我正在编写一个监视特定交换邮箱的简单控制台应用程序,当收到符合特定条件的电子邮件时,应用程序将下载XML文件附件并存档电子邮件.
我已经连接到EWS OK,并且已经能够遍历任何电子邮件,但是我在创建一个可以用来访问附件的EmailMessage对象时遇到了困难.
在下面的示例代码中,该EmailMessage message = EmailMessage.Bind(...)行执行时没有错误,但不返回有效消息,因此当我访问和属性或方法时,我收到一个错误:'对象引用未设置为对象的实例'.
我是C#的新手,更不用说EWS,所以我很难知道从哪里开始......
代码片段:
public static void FindItems()
{
try
{
ItemView view = new ItemView(10);
view.OrderBy.Add(ItemSchema.DateTimeReceived, SortDirection.Ascending);
view.PropertySet = new PropertySet(
BasePropertySet.IdOnly,
ItemSchema.Subject,
ItemSchema.DateTimeReceived);
findResults = service.FindItems(
WellKnownFolderName.Inbox,
new SearchFilter.SearchFilterCollection(
LogicalOperator.Or,
new SearchFilter.ContainsSubstring(ItemSchema.Subject, "Sales Enquiry")),
view);
log2.LogInfo("Total number of items found: " + findResults.TotalCount.ToString());
foreach (Item item in findResults)
{
log2.LogInfo(item.Id);
EmailMessage message = EmailMessage.Bind(service, item.Id, new PropertySet(BasePropertySet.IdOnly, ItemSchema.Attachments));
Console.WriteLine(message.Subject.ToString());
if (message.HasAttachments && message.Attachments[0] is FileAttachment)
{
FileAttachment fileAttachment = message.Attachments[0] as …Run Code Online (Sandbox Code Playgroud) 我正在成功生成并发送包含以下代码的电子邮件.
class UserMailer < ActionMailer::Base
default :from => 'user@user.com',
:date => Time.now
def new_user(user)
mail_subject = ['WELCOME TO ACME, INC', 'USER ACTIVATION']
@user = user
mail.attachments['File One.pdf'] = File.read(File.join(ATTACHMENT_DIR, 'shared', 'file_one.pdf'))
mail.attachments['File Two.pdf'] = File.read(File.join(ATTACHMENT_DIR, 'shared', 'file_two.pdf'))
mail.attachments['File Three.pdf'] = File.read(File.join(ATTACHMENT_DIR, 'shared', 'file_three.pdf'))
mail.attachments['File Four.pdf'] = File.read(File.join(ATTACHMENT_DIR, 'shared', 'file_four'))
mail( :to => user.address.email,
:subject => mail_subject.join(' ~ ').upcase )
end
end
Run Code Online (Sandbox Code Playgroud)
但是,该电子邮件包含三个文本文档,这些文档与电子邮件正文的内容相同.我用于邮件程序的视图名为new_user.text.erb.
我怀疑对于我附加的每个pdf文档,也会生成一个纯文本文档,第一个是实际的电子邮件文档正文,其余三个与pdf文档一起附加.
如何在不附加这些(重复)文本文件的情况下附上这些pdf文件?有没有其他人遇到这个?
我有一个收到的电子邮件(mail-in db),其中包含一个RichTextField,其中找到了"some"附件.我也发现附件不是在RTF中,而是在文档中作为$ FILE.我试图处理所有对象,将它们复制到另一个外发电子邮件.我可以使用下面的代码找到$ FILE.
Dim rtiObject as NotesEmbeddedObject
Dim rti_Email as NotesRichTextItem
Dim obj_Email as NotesEmbeddedObject
ForAll p in mailDoc.items
if p.Name = "$FILE" then
set obj_Email = mailDoc.GetAttachment(p.Values(0)) 'this will return the Name of the attachment (or file)
set rtiObject = rti_Email.EmbedObject( EMBED_ATTACHMENT, "", obj_Email.Name) 'this is supposed to attach the file to the document's RTF
End If
End ForAll
Run Code Online (Sandbox Code Playgroud)
当这个脚本运行时,它找到$ FILE文件并返回名称而不是对象,我不能从那里做任何事情.
从原始文档中获取附件/对象($ FILE)并将其附加到外发电子邮件中的RTF,我需要做什么?
我考虑将附件分离到网络,然后将其附加到外发电子邮件,然后从网络中删除附件,但这似乎不切实际.
是否有更好的方法来处理传入电子邮件中的这些$ FILE类型的附件,这将使这更容易?
我正在开发一个PowerShell脚本,供帮助台在将userhome文件夹从服务器迁移到NAS设备时使用.帮助台用户将用户名输入"userhomelist.txt"文件.
我的问题是我无法让脚本附加所有日志文件.只有最后一个日志文件附加到电子邮件中.我想我需要使用一个字符串作为多个附件,但我一直认为还有另一种方法.
#----- STEP #1 retrieve contents of input file ---#
$INPUTFILEPATH = 'c:\temp\userhomelist.txt'
#----- read input file contents ----#
$inputdata = Get-Content $INPUTFILEPATH
#----- Top section of email body ----#
$msgreport = new-object Net.Mail.MailMessage
$msgreport = "To view log files, go to directory where this PowerShell Script was run from. `r"
$msgreport = $msgreport + "`r`n"
#read in each username
foreach ($username in $inputdata)
{
#----- STEP #2 robocopy files from \\server to \\nasdevice location ----#
Start-Process -FilePath robocopy …Run Code Online (Sandbox Code Playgroud) 我有一个Excel文件(Excel 2003中/ XLS格式),我想通过电子邮件与C#来发送.我的代码成功发送,但是当我尝试打开响应文件时,它似乎编码错误.
例如,这里是响应文件名:
= _utf-8_B_RWxzesOhbW9sw6FzXzIwMTJfMTBfMTZf.dat
这是响应文件本身:
?= UTF-8乙VEdWdmJIWmhjMkZ1Wk1Pelh6UXlYekZmPz0NCiA9P3V0Zi04P0I/VGtW =\\ = UTF-8乙TlgwZFRXaTU0YkhNPT89 ="内容传输编码:???????的base64 Content-Disposition的:附着
0M8R4KGxGuEAAAAAAAAAAAAAAAAAAAAAPgADAP7/CQAGAAAAAAAAAAAAAAABAAAA AQAAAAAAAAAAEAAAIwAAAAEAAAD + //// AAAAAAAAAAD ///////////////////// //////////////////// //////////////////////////////////////////// ////// //////////////////////// ....
这是我的代码片段:
...
var attachment = new Attachment(WriteFileToMemory("fileFullPath"), "fileName.xls");
attachment.ContentType = new ContentType("application/vnd.ms-excel");
attachmentCollection.Add(attachment);
...
private Stream WriteFileToMemory(string filePath)
{
var memoryStream = new MemoryStream();
_openedStreams.Add(memoryStream);
using (var file = new FileStream(filePath, FileMode.Open, FileAccess.Read))
{
var bytes = new byte[file.Length];
file.Read(bytes, 0, (int) file.Length);
memoryStream.Write(bytes, 0, (int) file.Length);
file.Close();
}
memoryStream.Position = 0;
return memoryStream;
} …Run Code Online (Sandbox Code Playgroud) 如何检索并保存通过Mailgun POST的表单发送给我的附件
以下是一些参数
attachment-1
{:filename=>"crabby.gif", :type=>"image/gif", :name=>"attachment-1", :tempfile=>#<Tempfile:/tmp/RackMultipart20140707-2-slsrkh>, :head=>"Content-Disposition: form-data; name=\"attachment-1\"; filename=\"crabby.gif\"\r\nContent-Type: image/gif\r\nContent-Length: 2785\r\n"}
attachment-2
{:filename=>"attached_????.txt", :type=>"text/plain", :name=>"attachment-2", :tempfile=>#<Tempfile:/tmp/RackMultipart20140707-2-sudxuf>, :head=>"Content-Disposition: form-data; name=\"attachment-2\"; filename=\"attached_????.txt\"\r\nContent-Type: text/plain\r\nContent-Length: 32\r\n"}
Content-Type
multipart/mixed; boundary="------------020601070403020003080006"
Run Code Online (Sandbox Code Playgroud) 我有一个纯文本的电子邮件备份文件.如何检索附加到其上的文档(PDF,IMAGES,WORD FILE)作为普通文件?
我正在使用 python 3.5 和以下代码主要来自 google api 页面... https://developers.google.com/gmail/api/guides/sending 针对 python 3.x 稍作修改
我可以成功地发送带有内容文本和附件 pdf 的电子邮件,但所附的 pdf 是完全空白的。
请帮助并提前致谢
def create_message_with_attachment(bcc, subject, message_text, file,sender='me' ):
message = MIMEMultipart()
message['bcc'] = bcc
message['from'] = sender
message['subject'] = subject
msg = MIMEText(message_text)
message.attach(msg)
content_type, encoding = mimetypes.guess_type(file)
main_type, sub_type = content_type.split('/', 1)
fp = open(file, 'rb')
msg = MIMEBase(main_type, sub_type)
msg.set_payload(fp.read())
fp.close()
filename = os.path.basename(file)
msg.add_header('Content-Disposition', 'attachment', filename=filename)
message.attach(msg)
raw = base64.urlsafe_b64encode(message.as_bytes())
raw = raw.decode()
return {'raw':raw}
Run Code Online (Sandbox Code Playgroud) attachment ×10
email ×4
c# ×3
actionmailer ×1
base64 ×1
csv ×1
decoding ×1
excel ×1
forms ×1
gmail ×1
inline ×1
lotusscript ×1
mailgun ×1
mfmailcomposeviewcontroller ×1
outlook ×1
pdf ×1
php ×1
post ×1
powershell ×1
python ×1
richtext ×1