Xamarin ile Eposta Gönderme

Bu yazımızda Xamarin ve C# ile mobil uygulamadan SMTP(Simple Mail Transfer Protocol) kullanarak nasıl Eposta gönderileceğinden bahsedeğiz.

Bu uygulamayı test edebilmek için bir adet Eposta hesabına ve bir SMTP sunucusuna ihtiyacımız bulunmaktadır. Mevcut durumda kullanabileceğimiz pek çok seçenek bulunmaktadır.

Örnek olarak GMAIL tercih edildiğini düşünürsek. Gerekli adımları sıralayalım.

1-) 1 adet gmail hesabı oluşturalım(Eğer varsa bu adımı atlayabiliriz).

2-)GMAIL ‘e ait SMTP bilgilerini elde edelim.

GMAIL SMTP Bilgileri

3-)GMAIL Güvenlik Ayarları

Varsayılan olarak GMAIL harici uygulamaların SMTP sunucusuna erişerek Eposta göndermesini engellemektedir. Bu engeli kaldırmak için 1. Adımda oluşturduğumuz Epostanın ayarlarına girerek güvenlik sekmesinden Güvenliği düşük uygulama erişimine izin vermeniz gerekmektedir.

XAMARIN Uygulama Arayüzü

Gerekli XAML Kodları

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="XFEposta.MainPage">

    <StackLayout>
        <Frame BackgroundColor="#2196F3" Padding="24" CornerRadius="0">
            <Label x:Name="durumLbl" Text="Eposta Gönder" HorizontalTextAlignment="Center" TextColor="White" FontSize="36"/>
        </Frame>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
                <RowDefinition Height="*" />
                <RowDefinition Height="*" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>
            <Label Text="Kime" Grid.Column="0" Grid.Row="0"  VerticalOptions="Center" HorizontalOptions="StartAndExpand" />
            <Entry x:Name="kimeTxt" Placeholder="Kime" Grid.Column="1" Grid.Row="0"  HorizontalOptions="FillAndExpand" />
            <Label Text="Konu" Grid.Column="0" Grid.Row="1" VerticalOptions="Center" HorizontalOptions="StartAndExpand"/>
            <Entry x:Name="konuTxt" Placeholder="Konu" Grid.Column="1" Grid.Row="1" HorizontalOptions="FillAndExpand" />
            <Label Text="Gövde" Grid.Column="0" Grid.Row="2" VerticalOptions="Center" HorizontalOptions="StartAndExpand"/>
            <Editor x:Name="govdeTxt" MaxLength="200" Placeholder="Gövde" Grid.Column="1" Grid.Row="2" HorizontalOptions="FillAndExpand" />
            <Button Text="Gönder" Grid.Column="1" Grid.Row="3" Clicked="Button_Clicked" />
        </Grid>
        

    </StackLayout>

</ContentPage>

Gerekli C# Kodları

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using System.Net.Mail;
using System.Net;

namespace XFEposta
{
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void Button_Clicked(object sender, EventArgs e)
        {
            epostaGonder(kimeTxt.Text, konuTxt.Text, govdeTxt.Text);
        }

        public void epostaGonderildi(Object sender,EventArgs e)
        {
            durumLbl.Text = "E-Posta Gönderildi";
        }

        public void epostaGonder(String kime,String konu,String govde)
        {
            try
            {
                String kimden = "eposta adresi"; //Örnek: yenieposta@gmail.com
                MailMessage msg = new MailMessage(kimden, kime);
                msg.Subject = konu;
                msg.Body = govde;
                SmtpClient sc = new SmtpClient("smtp.gmail.com");//SMTP sunucu adresi
                sc.Port = 587;
                sc.SendCompleted += new SendCompletedEventHandler(epostaGonderildi);
                NetworkCredential kimlik = new NetworkCredential(kimden, "eposta parolası");
                sc.Credentials = kimlik;
                sc.EnableSsl = true;
                sc.SendAsync(msg, kime);
            }
            catch (Exception err)
            {
                durumLbl.Text = err.Message;
            }           
        }
    }
}

Uygulama Kodları

https://github.com/omerozcann/XamarinEpostaGonderimi

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir