Hataları çözme

Gmail API iki düzeyde hata bilgisi döndürür:

  • Üstbilgideki HTTP hata kodları ve mesajları.
  • Yanıt gövdesinde, hatayı nasıl ele alacağınızı belirlemenize yardımcı olabilecek ek bilgiler içeren bir JSON nesnesi.

Gmail uygulamaları, REST API kullanılırken karşılaşılabilecek tüm hataları yakalayıp işlemelidir. Bu kılavuzda, belirli API hatalarının nasıl çözüleceğiyle ilgili talimatlar verilmiştir.

400 hatasını çözme: Hatalı istek

Bu hata, kodunuzdaki aşağıdaki hatalardan kaynaklanabilir:

  • Gerekli bir alan veya parametre sağlanmadı.
  • Sağlanan değer veya sağlanan alanların bir kombinasyonu geçersiz.
  • Geçersiz ek.

Aşağıda bu hatanın örnek JSON gösterimi verilmiştir:

{
  "error": {
    "code": 400,
    "errors": [
      {
        "domain": "global",
        "location": "orderBy",
        "locationType": "parameter",
        "message": "Sorting is not supported for queries with fullText terms. Results are always in descending relevance order.",
        "reason": "badRequest"
      }
    ],
    "message": "Sorting is not supported for queries with fullText terms. Results are always in descending relevance order."
  }
}

Bu hatayı düzeltmek için message alanını kontrol edin ve kodunuzu buna göre ayarlayın.

401 hatasını çözme: Geçersiz kimlik bilgileri

401 hatası, kullandığınız erişim jetonunun süresinin dolduğunu veya geçersiz olduğunu gösterir. Bu hata, istenen kapsamlar için yetkilendirme eksikliğinden de kaynaklanabilir. Bu hatanın JSON gösterimi aşağıda verilmiştir:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "authError",
        "message": "Invalid Credentials",
        "locationType": "header",
        "location": "Authorization",
      }
    ],
    "code": 401,
    "message": "Invalid Credentials"
  }
}

Bu hatayı düzeltmek için uzun süreli yenileme jetonunu kullanarak erişim jetonunu yenileyin. İstemci kitaplığı kullanıyorsanız jeton yenileme işlemi otomatik olarak gerçekleştirilir. Bu işlem başarısız olursa kullanıcıyı Uygulamanızı Gmail ile yetkilendirme bölümünde açıklandığı şekilde OAuth akışına yönlendirin.

Gmail sınırları hakkında daha fazla bilgi için Kullanım sınırları başlıklı makaleyi inceleyin.

403 hatasını düzeltme: Kullanım sınırı aşıldı

Kullanım sınırı aşıldığında veya kullanıcının doğru ayrıcalıkları olmadığında 403 hatası oluşur. Hata türünü belirlemek için döndürülen JSON'un reason alanını değerlendirin. Bu hata aşağıdaki durumlarda ortaya çıkar:

  • Günlük sınır aşıldı.
  • Kullanıcı oranı sınırı aşıldı.
  • Proje hızı sınırı aşıldı.
  • Uygulamanız, kimliği doğrulanmış kullanıcının alanında kullanılamıyor.

Gmail sınırları hakkında daha fazla bilgi için Kullanım sınırları başlıklı makaleyi inceleyin.

403 hatasını düzeltme: Günlük sınır aşıldı

dailyLimitExceeded hatası, projenizin ücretsiz API sınırına ulaşıldığını gösterir. Bu hatanın JSON gösterimi aşağıda verilmiştir:

{
  "error": {
    "errors": [
      {
        "domain": "usageLimits",
        "reason": "dailyLimitExceeded",
        "message": "Daily Limit Exceeded"
      }
    ],
    "code": 403,
    "message": "Daily Limit Exceeded"
  }
}

Bu hatayı düzeltmek için:

  1. Google API Konsolu'nu ziyaret edin.
  2. Projenizi seçin.
  3. Kotalar sekmesini tıklayın.
  4. Ek kota isteğinde bulunun. Daha fazla bilgi için Ek kota isteme başlıklı makaleyi inceleyin.

Gmail sınırları hakkında daha fazla bilgi için Kullanım sınırları başlıklı makaleyi inceleyin.

403 hatasını düzeltme: Kullanıcı oranı sınırı aşıldı

userRateLimitExceeded hatası, kullanıcı başına sınıra ulaşıldığını gösterir. Bu hatanın JSON gösterimi aşağıda verilmiştir:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "userRateLimitExceeded",
    "message": "User Rate Limit Exceeded"
   }
  ],
  "code": 403,
  "message": "User Rate Limit Exceeded"
 }
}

Bu hatayı düzeltmek için uygulama kodunuzu daha az istek gönderecek veya istekleri yeniden deneyecek şekilde optimize etmeyi deneyin. İstekleri yeniden deneme hakkında bilgi edinmek için Hataları çözmek için başarısız istekleri yeniden deneme başlıklı makaleyi inceleyin.

Gmail sınırları hakkında daha fazla bilgi için Kullanım sınırları başlıklı makaleyi inceleyin.

403 hatasını çözme: Sıklık sınırı aşıldı

rateLimitExceeded hatası, kullanıcının Gmail API'nin maksimum istek hızına ulaştığını gösterir. Bu sınır, isteklerin türüne göre değişir. Bu hatanın JSON gösterimi aşağıda verilmiştir:

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "message": "Rate Limit Exceeded",
    "reason": "rateLimitExceeded",
   }
  ],
  "code": 403,
  "message": "Rate Limit Exceeded"
 }
}

Bu hatayı düzeltmek için başarısız istekleri yeniden deneyin.

Gmail sınırları hakkında daha fazla bilgi için Kullanım sınırları başlıklı makaleyi inceleyin.

403 hatasını çözme: {appId} kimlikli uygulama, kimliği doğrulanmış kullanıcının alanında kullanılamıyor

Kullanıcının alanının politikası, uygulamanızın Gmail'e erişmesine izin vermediğinde domainPolicy hatası oluşur. Bu hatanın JSON gösterimi aşağıda verilmiştir:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "domainPolicy",
        "message": "The domain administrators have disabled Gmail apps."
      }
    ],
    "code": 403,
    "message": "The domain administrators have disabled Gmail apps."
  }
}

Bu hatayı düzeltmek için:

  1. Kullanıcıya, alanın uygulamanızın Gmail'e erişmesine izin vermediğini bildirin.
  2. Kullanıcıya, uygulamanız için erişim isteğinde bulunmak üzere alan yöneticisiyle iletişime geçmesini söyleyin.

429 hatasını çözme: Çok fazla istek

429 "Çok fazla istek" hatası, kullanıcı başına günlük sınırlar (posta gönderme sınırları dahil), bant genişliği sınırları veya kullanıcı başına eşzamanlı istek sınırı nedeniyle oluşabilir. Her sınırla ilgili bilgiler aşağıda verilmiştir. Ancak her sınır, başarısız isteklerini yeniden denemeye veya işlemleri birden fazla Gmail hesabı arasında bölme işlemine çalışarak çözülebilir. Kullanıcı başına sınırlar hiçbir nedenle artırılamaz. Sınırlar hakkında daha fazla bilgi için Kullanım sınırları başlıklı makaleyi inceleyin.

Posta gönderme sınırları

Gmail API, standart günlük posta gönderme sınırlarını uygular. Bu sınırlar, ücretli Google Workspace kullanıcılar ve deneme sürümü gmail.com kullanıcıları için farklıdır. Bu sınırlar için Google Workspace'te Gmail gönderme sınırları başlıklı makaleyi inceleyin.

Bu sınırlar kullanıcı başınadır ve API istemcileri, yerel/web istemcileri veya SMTP MSA'sı olsun kullanıcının tüm istemcileri tarafından paylaşılır. Bu sınırlar aşılırsa yeniden deneme süresiyle birlikte HTTP 429 Too Many Requests "Kullanıcı hızı sınırı aşıldı" "(Posta gönderme)" hatası döndürülür. Günlük sınırların aşılması, istek kabul edilmeden önce birkaç saat boyunca bu tür hatalara neden olabilir.

Posta gönderme ardışık düzeni karmaşıktır: Kullanıcı kotasını aştığında API'nin 429 hata yanıtı döndürmeye başlaması birkaç dakikayı bulabilir. Bu nedenle, 200 yanıtının e-postanın başarıyla gönderildiği anlamına geldiğini varsayamazsınız.

Bant genişliği sınırları

API'de, IMAP'ye eşit ancak IMAP'den bağımsız kullanıcı başına yükleme ve indirme bant genişliği sınırları vardır. Bu sınırlar, belirli bir kullanıcının tüm Gmail API istemcileri arasında paylaşılır.

Bu sınırlar genellikle yalnızca istisnai durumlarda veya kötüye kullanım amaçlı durumlarda aşılınır. Bu sınırlar aşılırsa yeniden deneme süresiyle birlikte HTTP 429 Too Many Requests"Kullanıcı hızı sınırı aşıldı" hatası döndürülür. Günlük sınırların aşılması, istek kabul edilmeden önce birkaç saat boyunca bu tür hatalara neden olabilir.

Eşzamanlı İstekler

Gmail API, kullanıcı başına eşzamanlı istek sınırı (kullanıcı başına oran sınırına ek olarak) uygular. Bu sınır, belirli bir kullanıcıya erişen tüm Gmail API istemcileri tarafından paylaşılır ve hiçbir API istemcisinin Gmail kullanıcı posta kutusunu veya arka uç sunucusunu aşırı yüklemediğinden emin olur.

Tek bir kullanıcı için çok sayıda paralel istek yapılması veya çok sayıda istek içeren toplu istek gönderilmesi bu hatayı tetikleyebilir. Gmail kullanıcı posta kutusuna aynı anda erişen çok sayıda bağımsız API istemcisi de bu hatayı tetikleyebilir. Bu sınır aşılırsa HTTP 429 Too Many Requests "Kullanıcı için çok fazla eşzamanlı istek" hatası döndürülür.

500 hatasını çözme: Arka uç hatası

İstek işlenirken beklenmeyen bir hata oluştuğunda backendError oluşur.

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "backendError",
    "message": "Backend Error",
   }
  ],
  "code": 500,
  "message": "Backend Error"
 }
}

Bu hatayı düzeltmek için başarısız istekleri yeniden deneyin. 500 hatalarının listesi aşağıda verilmiştir:

  • 502 Hatalı Ağ Geçidi
  • 503 Hizmet Kullanılamıyor
  • 504 Ağ Geçidi Zaman Aşımı

Hataları çözmek için başarısız istekleri yeniden deneme

Hız sınırları, ağ hacmi veya yanıt süresiyle ilgili hataları gidermek için başarısız bir isteği düzenli aralıklarla artan bir süre boyunca tekrar deneyebilirsiniz. Örneğin, başarısız bir isteği bir saniye sonra, ardından iki saniye sonra ve daha sonra dört saniye sonra yeniden deneyebilirsiniz. Bu yönteme üstel geri çekilme adı verilir ve eşzamanlı ortamlarda bant genişliği kullanımını iyileştirmek ve isteklerin veri hızını en üst düzeye çıkarmak için kullanılır.

Yeniden deneme dönemlerini hatadan en az bir saniye sonra başlatın.

Kullanım sınırlarını görüntüleme veya değiştirme, kotayı artırma

Projenizin kullanım sınırlarını görüntülemek, değiştirmek veya kotanızda artış talep etmek için şunları yapın:

  1. Projeniz için faturalandırma hesabınız yoksa hesap oluşturun.
  2. API Konsolu'nda API kitaplığının Etkin API'ler sayfasına gidin ve listeden bir API seçin.
  3. Kota ile ilgili ayarları görüntülemek ve değiştirmek için Kotalar'ı seçin. Kullanım istatistiklerini görüntülemek için Kullanım'ı seçin.

Toplu istekler

Gruplandırma kullanılması önerilir ancak daha büyük grup boyutları hız sınırlamasını tetikleyebilir. 50'den fazla istek içeren toplu istekler gönderilmesi önerilmez. İstekleri nasıl gruplayacağınız hakkında bilgi edinmek için İstekleri gruplama başlıklı makaleyi inceleyin.