PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : ارسال ایمیل از طریق اکسل



【★ tv_kade ★】
2010/09/17, 01:17
سلام
من میخوام یک باکس توی یوزرفرم لیستم ایجاد کنم که با کلیک برروی اون به صفحه Outlook ویندوز برای ارسال ایمیل بره و کلا هر روشی که شخصی که لیست رو داره بتونه به من ایمیل بزنه
تقریبا یه همچین باکسی

http://www.irupload.ir/images/lgt1zhjloe6s0ij00h2.jpg

میخواستم ببینم روشی که با کلیک بروی اون مارو به نرم افزار Outlook ویندوز یا هر چیزی برای ارسال ایمیل رهسپار میکنه چی هست؟:huh:

با سپاس

m_d6712
2010/09/17, 12:28
نمی دانم که منظور شما رو متوجه شدم یا نه! برای این که با کلیک روی یک دکمه OUTLOOK باز شود و شما بتوانید میل بزنید از دستور زیر برای CommandButtonخود استفاده کنید:

Private Sub CommandButton1_Click()
ActiveWorkbook.FollowHyperlink Address:="mailto:m.d6712@gmail.com"
End Sub

این فرمان اگر OUTlook روی سیستم شما نصب شده باشد خود بخود آن را باز می نماید. (اگر نرمافزار پیش فرض سیستم عامل شما OUTLOOK نباشد و یا آن را تغییر داده باشید همان نرم افزار باز خواهد شد.)

در سایت های اینترنتی برای ارسال پیام به کاربران از کدنویسی برای ارسال پیام استفاده می نمایند. معمولا مدیر سایت صفحه ای برای ارسال پیام به کاربران در اختیار دارد که این صفحه همانند صفحه OUTLOOK قابلیت ارسال دارد. فرق آن در این است که در پنل مدیریت سایت Email از طریق اتصال به سرور و از طریق برنامه نویسی که قبلا روی سایت انجام شده است ارسال می شود. سایت هایی که به زبان ASP.NEt نوشته می شود دارای کتابخانه هایی برای ارسال EMail می باشد. از آنجایی که VB.Net یکی از رایج ترین زبان های برنامه نویسی ASP و وب می باشد، دارای این کتابخانه ها نیز هست. اما برای VB6 و VBA این کتابخانه ها یک جا و سرجمغ نیست. و باید پیدا شود.

به طور کلی امکان این که شما قادر به ارسال ایمیل در محیط فرم داخل نرم افزار Excel باشید (بدون باز کردن OUTLOOK) نیز می باشد. برای این کار باید کتابخانه مورد نظر را به برنامه خود Add کنید. من هنوز فرصت گشتن و پیدا کردن این کتابخانه را نداشته ام اما اگر تونستم آن را برای شما در این تاپیک می گذارم!

در واقع شما با طراحی فرمی که دارای TExtBox های برای فیلد های زیر می باشد می توانید با برنامه نویسی از طریق اتصال به سرور از داخل EXcel میل ارسال نمایید.

فیلد ها:

mail address
password
to
cc
bcc
subject
attachment
body
text
type
...


همه ایمیل ها این قابلیت را ندارند. فقط ایمیل هایی که سرویس SMTP دارند را می توانید استفاده نمایید.
به عنوان مثال تمامی Email هایی که به همراه هاست خریداری می نمایید این سرویس را دارند.
ایمیل دانشگاه فردوسی این سرویس را ندارد.
ایمیل Gmail دارای این سرویس به صورت مجانی است
ایمیل Yahoo این سرویس را برای کاربران خاص خود دارد. یعنی مجانی نیست. شما باید YahooPLUS را نصب کتید.
. ووو ....

با این ترتیب شما در صورتی که فقط Gmail داشته باشید می توانید از این سرویس استفاده نمایید.



چند روش دیگر هم هست که برای ارسال به کمک OUTLOOK می باشد. به خوبی روش قبلی نیست ولی شما می توانید فایل را برای کسی یا و هر شیت و یا قسمتی از داده را ها را برای کسی و یا حتی فایل دیگری را برای کسی ارسال نمایید. مثلا این کد برای ارسال کل فایل Excel از طریق OUTLOOK است.

Private Sub CommandButton1_Click()
Workbooks(1).SendMail Recipients:="Samplemail@gmail.com", Subject:="Your inputs are due", returnreceipt:=True
End Sub

این کد OUTlook را باز کرده و سعی می کند از طریق Acount شما در OUTLOOK فایل را برای فرد مورد نظر ارسال کند.
برای اطلاع بیشتر و انواع و نحوه استفاده از این روش آخر این سایت را ببینید: http://www.rondebruin.nl/sendmail.htm

【★ tv_kade ★】
2010/09/17, 13:31
تشکر فراوان بابت پاسخ کامل و جامعی که فرمودین



نمی دانم که منظور شما رو متوجه شدم یا نه! برای این که با کلیک روی یک دکمه OUTLOOK باز شود و شما بتوانید میل بزنید از دستور زیر برای CommandButtonخود استفاده کنید:

Private Sub CommandButton1_Click()
ActiveWorkbook.FollowHyperlink Address:="mailto:m.d6712@gmail.com"
End Sub

این فرمان اگر OUTlook روی سیستم شما نصب شده باشد خود بخود آن را باز می نماید. (اگر نرمافزار پیش فرض سیستم عامل شما OUTLOOK نباشد و یا آن را تغییر داده باشید همان نرم افزار باز خواهد شد.)


متاسفانه مشکلی که برای ارسال میل از این طریق outlook هست اینه که شخصی که میخواد ایمیل بفرسته باید حتما تنظیمات این نرم افزارو روی سیستمش کاملا انجام داده باشه که مطمئنا خیلی از ماها برای چک کردن وارسال ایمیل از این نرم افزار استفاده نمیکنیم بنابراین در بسیاری از مواردبه کار نمیاد و بی فایده است:blush:



به طور کلی امکان این که شما قادر به ارسال ایمیل در محیط فرم داخل نرم افزار Excel باشید (بدون باز کردن OUTLOOK) نیز می باشد. برای این کار باید کتابخانه مورد نظر را به برنامه خود Add کنید. من هنوز فرصت گشتن و پیدا کردن این کتابخانه را نداشته ام اما اگر تونستم آن را برای شما در این تاپیک می گذارم!

در واقع شما با طراحی فرمی که دارای TExtBox های برای فیلد های زیر می باشد می توانید با برنامه نویسی از طریق اتصال به سرور از داخل EXcel میل ارسال نمایید.

فیلد ها:

mail address
password
to
cc
bcc
subject
attachment
body
text
type
...

همه ایمیل ها این قابلیت را ندارند. فقط ایمیل هایی که سرویس SMTP دارند را می توانید استفاده نمایید.
به عنوان مثال تمامی Email هایی که به همراه هاست خریداری می نمایید این سرویس را دارند.
ایمیل دانشگاه فردوسی این سرویس را ندارد.
ایمیل Gmail دارای این سرویس به صورت مجانی است
ایمیل Yahoo این سرویس را برای کاربران خاص خود دارد. یعنی مجانی نیست. شما باید YahooPLUS را نصب کتید.
. ووو ....

با این ترتیب شما در صورتی که فقط Gmail داشته باشید می توانید از این سرویس استفاده نمایید.



دقیقا منظور من همین بود
بله جیمیل از سرویس smtp پشتیبانی میکنه و من هم از این سرویس استفاده میکنم
یعنی میشه فرمی با فیلدهایی که گفتین ایجاد کرد و خیلی راحت از طریق اکسل به سرور موردنظر متصل شد و پیغام فرستاد؟؟؟

ممنون میشم اگر امکانش هست این فرم رو طراحی کنید

m_d6712
2010/09/17, 16:47
فایل بروز رسانی شد.....

سلام دوست عزیز!

یک کتابخونه پیدا کردم که میتونی ازش استفاده کنی! برای این کار این فایل رو دانلود کن:
http://www.chilkatsoft.com/download/EmailActiveX.msi

بعد از دانلود، در آدرس مشخصی نصب کن.
بعد از نصب، به محیط VBA برو و از منوی Tools گزینه Reference ها رو انتخاب کن.
Reference در پنجره Reference گزینه Browse را بزن.
به آدرسی که کتابخونه ها رو نصب کردی برو و فایل ChilkatMail_v8.dll رو Add کن.
پس از Add کردن کتابخونه مطمئن شو که در لیست available refernces اضافه شده است. آن را پیدا کن و تیک کنار آن را بزن! البته ممکن هست وقتی Add میشه خودش تیک را زده باشد.
کتابخانه برای شما آماده است.
http://s7.aks98.com/images/68333885808609649298.jpg

یک نمونه کد برای نحوه استفاده از این کتابخانه برات میزارم! باز اگر سوالی داشتی بگو تا جواب بدم! شما باید برای استفاده از هر سرور ایمیلی تنضیمات مخصوص برای اون سرور و انجام بدهی. در این مثال که برای سرور Gmail با پورت 587 هست من تنظیمات رو انجام دادم:



Private Sub SendMail_Click()

------ ابتدا یک شی میسازی بر وصل شدن به اکانت و سرور
Dim mailman As New ChilkatMailMan2

------کد زیر برای باز کردن قفل کتابخانه است
success = mailman.UnlockComponent("UnlockCode")

------کد زیر موفقیت آمیز بودن باز شدن قفل را چک می کند.
If success <> 1 Then
MsgBox ("auth failed")
End If

--------کد های زیر تنظیمات اتصال به سرور می باشد.

mailman.SmtpHost = "smtp.gmail.com"
mailman.SmtpUsername = "YourUserName" ---- دقت فرمایید برای Username گذاشتن @gmail.com لازم نمی باشد.
mailman.SmtpPassword = "YourPassword"
mailman.SmtpSsl = 1
mailman.SmtpPort = 587
mailman.StartTLS = 1

------ ساختن شی ایمیل
Dim email As New ChilkatEmail2

----- عنوان، فرستنده، اضافه کردن گیرنده و متن ایمیل
email.Subject = "test"
email.From = "Morteza Davari <m.d6712@gmail.com>"
email.Body = "this is a test" & vbCrLf & "line 2" & vbCrLf & "-Bill"
email.AddTo "Hello", "m_d6712@yahoo.com"


------ ارسال ایمیل
success = mailman.SendEmail(email)
------ بررسی ارسال صحیح و کامل (صفر به معنی Error هست)
If (success = 0) Then
MsgBox mailman.LastErrorText
End If

End Sub


کل کد:


Private Sub SendMail_Click()

Dim mailman As New ChilkatMailMan2
success = mailman.UnlockComponent("UnlockCode")
If success <> 1 Then
MsgBox ("auth failed")
End If

mailman.SmtpHost = "smtp.gmail.com"
mailman.SmtpUsername = "xxxxxxxxxxxxxx"
mailman.SmtpPassword = "xxxxxxxxxxxxxx"
mailman.SmtpSsl = 1
mailman.SmtpPort = 587
mailman.StartTLS = 1
Dim email As New ChilkatEmail2
email.Subject = "test"
email.From = "Morteza Davari <m.d6712@gmail.com>"
email.Body = "this is a test" & vbCrLf & "line 2" & vbCrLf & "-Bill"
email.AddTo "Hello", "m_d6712@yahoo.com"
success = mailman.SendEmail(email)
If (success = 0) Then
MsgBox mailman.LastErrorText
End If


End Sub




دقت فرمایید که تنظیمات سرور که در این مثال آورده شد فقط برای سرور Gmail با پورت 587 می باشد. چون Gmail من پورتش 587 بود این رو گذاشتم!
پورت دیگری که برای Gmail وجود دارد پورت 465 است که تنظیمات زیر را دارد.
mailman.SmtpHost = "smtp.gmail.com"
mailman.SmtpPort = 465
mailman.SmtpSsl = 1
در واقع در این مورد علاوه بر تغییر پورت TSL هم 0 (پیشفرض) تنظیم می شود.


برای این که بدانید کدام پورت هستید می توانید از کنترل پنل خود در Google از یا از Outlook کمک بگیرید. Outlook ابزاری دارد که می تواند به صورت اتومات تنظیمات اکانت های Google و برخی سرور های دیگر را تشخیص دهد.



یک نمونه فرم برای ارسال ایمیل
http://www.mediafire.com/file/picxmiafq2mqw7z/Sending%20Mail.xlsm

دقت نمایید که باید حتما قبل از استفاده از فایل فوق کتابخانه که در بالا توضیح دادم باید نصب شود.



در نمونه زیر وقت فرمایید که برخی از اکانت های Gmail قابل استفاده است! به دلیل که بالا توضیح داده شد.

کد زیر :



Private Sub CommandButton1_Click()

Dim mailman As New ChilkatMailMan2
success = mailman.UnlockComponent("UnlockCode")
If success <> 1 Then
MsgBox ("عدم اعتبار ")
End If

mailman.SmtpHost = "smtp.gmail.com"
mailman.SmtpUsername = TextBox1.Text
mailman.SmtpPassword = TextBox2.Text
mailman.SmtpSsl = 1
mailman.SmtpPort = 587
mailman.StartTLS = 1
Dim email As New ChilkatEmail2
email.Subject = TextBox4.Text
email.From = TextBox1.Text + "@gmail.com>"
email.Body = TextBox5.Text
email.AddTo TextBox3.Text, TextBox3.Text
success = mailman.SendEmail(email)
If (success = 0) Then
MsgBox mailman.LastErrorText
else
MsgBox "پيام با موفقيت ارسال شد."
End If


End Sub





تصویر زیر تصویر از فرم است:
http://s7.aks98.com/images/29076337860199595605.jpg

فایل:

【★ tv_kade ★】
2010/09/17, 22:15
سپاس فراوان از شما

کتابخونه رو اد کردم
من الان در ساخت شی ایمیل مشکل دارم و درواقع از قسمت زیر
Dim mailman As New ChilkatMailMan2
در مازوال ارور میگیره

همچنین فایل نمونه ای که قرار دادین رو هم تست کردم
پیغام ارسال نمیشه
ازesle
بالای MsgBox "پیغام با موفقیت ارسال شد"
خطا میگیره

ممنون میشم توضیح بدین

m_d6712
2010/09/17, 22:35
سپاس فراوان از شما

کتابخونه رو اد کردم
من الان در ساخت شی ایمیل مشکل دارم و درواقع از قسمت زیر
Dim mailman As New ChilkatMailMan2
در مازوال ارور میگیره

همچنین فایل نمونه ای که قرار دادین رو هم تست کردم
پیغام ارسال نمیشه
ازesle
بالای MsgBox "پیغام با موفقیت ارسال شد"
خطا میگیره

ممنون میشم توضیح بدین



قسمت اول: شما فایل را نصب کرده اید. و به reference ها هم احتمالا اضافه کردید. اما فکر می کنم تیک مربوط به chilkat mail v8 را در لیست Reference ها نزده اید. یک بار دیگر روند رو مرور کنید.


قسمت دوم : بله! عذر می خوام! اشتباها else را esle نوشتم!
Esle را با Else تعویض کنید درست میشه! به هر حال من فایل را تعویض خواهم کرد با قبلی

فایل جدید:
http://www.mediafire.com/file/picxmiafq2mqw7z/Sending%20Mail.xlsm

【★ tv_kade ★】
2010/09/17, 23:36
واقعا ممنونم
مشکل کاملا برطرف شد و ارسال ایمیل با موفقیت انجام شد...همون چیزی که میخواستم

حالا ایا میشه در این فرم موارد مهمی مثله اتچ کردن فایل از داخل سیستم و Hyperlink و همچنین امکان فعال کردن کپی پیس داخل فیلدها ایجاد کرد؟؟؟

ویه چیز دیگه: ایا میشه دو تا یوزر فرم داخل هم قرار داد ( Userform to Userform) به این صورت که یوزر فرم اول ران بشه بعد از طریق یکی از لیست باکسها مثلا با کلیک بروی command botton یوزر فرم دوم ران بشه؟:huh:

بازم ممنون از شما بابت توجهی که به ما تازه واردها دارین

m_d6712
2010/09/18, 00:52
برای سوال اول: بله امکانش هست!
برای Attach کردن فایل:

این کد رو بعد از شی Email و قبل از ارسال ایمیل بگذار:


contentType = Email.AddFileAttachment("C:\Users\Mo\Desktop\web.c onfig")
If (contentType = vbNullString) Then
MsgBox Email.LastErrorText
Exit Sub
End If

آدرس فایل رو تغییر بده بر اساس کامپیوتر خودت


برای سوال دوم: خیلی موارد زیادی به طور مشابه در سایت مطرح شده! اون ها رو چک کن. فکر کنم کمکت کنه! اما به طور ساده برای فرآخوانی یک فرم از یک فرم دیگر:
هر جا که قصد باز کردن فرم دوم رو داری این عبارت رو تایپ کن:


Userform2.show



موفق باشید.

【★ tv_kade ★】
2010/09/18, 08:20
ایا میشه این فرم و دستور رو علاوه بر اکانت جی میل برای همه ی کاربرانی که ایمیلشون از پروتکول smtp پشتیبانی میکنه تعمیم داد؟

afshin160
2010/09/18, 09:17
براي من اين Error را ميده

mail send excel error (http://s2.kimag.es/share/84064152.jpg)

m_d6712
2010/09/18, 13:44
حتما باید http://www.chilkatsoft.com/download/EmailActiveX.msi روی کامپیوتر شما نصب بشه! و حتما بعد نصب به Refernec ها اضافه بشه! و بعد از اضافه شدن باید تیک بخوره! بعدش فایل درست کار می کنه! البته اگر از تنظیمات درست Gmail خودت استفاده کنی! و به اینترنت هم وصل باشی!

safaei.mehdi@mapnablade.com
2012/05/09, 10:13
با سلام و احترام
يه سئوال مرتبط با موضوع داشتم:
Hyperlink يه قسمت داره كه ميتونيد يك ايميل آدرس رو مشخص كنيد. ولي وقتي روي هايپر لينك ايجاد شده كليك مي كنيد، فقط يه صفحه ايميل باز ميشه كه در قسمت TO ايميل آدرسي رو كه مشخص كردين، درج كرده!
ولي من مي خوام وقتي كه روي اين هايپرلينك كليك كردم، فايلي رو هم كه دارم باهاش كار ميكنم، پيوست اون ايميل بشه. مثل كاري كه send as attachment در تب فايل ميكنه.(اكسل 2010)
سپاس گذارم

~M*E*H*D*I~
2012/05/09, 13:02
سلام
برای اینکار از اوتلوک استفاده کنید البته باید جی میل داشته باشد در این صورت attach کردن فایل خیلی ساده تر خواهد بود

safaei.mehdi@mapnablade.com
2012/05/09, 14:34
ضمن تشكر. هدف من كليك بر روي هايپر لينكي در اكسل است.
يعني وقتي روي هايپر لينك كليك مي كنيد، فايل موجود پيوست يك صفه جديد در آتلوك گردد.
با سپاس فراوان،

m_d6712
2012/05/20, 14:38
ضمن تشكر. هدف من كليك بر روي هايپر لينكي در اكسل است.
يعني وقتي روي هايپر لينك كليك مي كنيد، فايل موجود پيوست يك صفه جديد در آتلوك گردد.
با سپاس فراوان،


سلام دوست عزیز.
برای این کار اگر در محیط وب بودید، توصیه میکردم از این دستور استفاده کنید:
MailTo:mortezadavari@kuleuven.be?subject=Message&body=yourbody&attachments='fileadress'

اما در 2010 من امتحان کردم فایل ضمیمه کار نمی کرد ولی body و subject درست کار می کرد.

کلک دیگری می توانید بزنید.

ابتدا در محیط برنامه نویسی. tools- references -> microsoft outlook 12 object llibrary رو انتخاب کنید. اگر 2010 کار میکنید به جای 12 عدد 14 خواهید دید.

یک زیر برنامه درست کنید. (در صورتی که ایمیل ها و متن ها و فایل ها متفاوت هست میتوانید تابع درست کنید.)
با این نام:




Sub a()
Dim oApp As Outlook.Application
Dim oMailItem As MailItem
Dim oAttach As Attachments
'Create new instance of Outlook
Set oApp = New Outlook.Application
'Create new Email
Set oMailItem = oApp.CreateItem(olMailItem)
oMailItem.Save
oMailItem.Body = "Your Email body"
Set oAttach = oMailItem.Attachments
ActiveWorkbook.Save
oAttach.Add ActiveWorkbook.FullName, olByValue, 1
oMailItem.Recipients.Add "mortezadavari@kuleuven.be"
oMailItem.Subject = "Your Subject"
'You don't need to display the email but if you wish to.
oMailItem.Display
End Sub



این زیر برنامه رو که ران کنید. یک ایمیل به همراه فایل اتچ شده در پنجره نرم افزار outlook باز خواهد شد. در صورت تمایل می توانید از دستور oMailItem.Send برای ارسال استفاده کنید. در این صورت بدون نمایش صفحه ارسال خواهد شد.
دقت کنید که در کد بالا خود فایل اکسل کنونی شما در جایی ذخیره شده و ضمیمه می شود.
اما می توانید هر فایل دیگری را که مد نظر شماست در قسمت oAttach.Add اضافه کنید.

تنها نکته ای که می ماند. متصل کردن hyperlink به این زیر برنامه (ماکرو ) و یا تابع می باشد.

برای این کار می توانید از کدی شبیه کد زیر استفاده نمایید.




Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
If Target.Range.Address = "$A$4" Then
a()
End If
End Sub


موفق و پیروز باشید.

safaei.mehdi@mapnablade.com
2012/05/22, 08:28
جناب آقاي داوری
با تشكر فراوان از شما ..خيلي خيلي خيلي ممنونم

m_d6712
2012/05/23, 20:05
ّبرای استفاده دوستان فایلی که دوستمون آقای صفایی آماده کرده بود رو من ویرایش کردم و اینجا میزارم. با اجازه صاحبش

http://www.mediafire.com/?g9ozjojcm44w4wa

پیروز باشید.

hosseinamerey
2013/12/21, 12:08
دوست عزیز امکانش هست این فایل attache ازش یه نمونه بذاری
:o:o

E!LiA
2017/09/24, 20:35
سلام و وقت بخير

ايا امكانش هست با تعريف يك دكمه ،يه سطر يا سلول از اكسل وارد outlook بشه براي ارسال؟
مثلا يك ليستي از اسامي و اطلاعات كارمندان هست،يك سطر انتخاب بشه و با كليك روي دكمه،بره براي ارسال؟

ممنون